1
我有一個Grails服務方法,它調用一個普通的Java類來使用JDBC將一些數據保存到數據庫。接下來,grails服務方法也寫入相同的數據庫。這應該全部發生在同一個事務中。將聲明式spring事務(Grails服務)傳播給純JDBC代碼
def dataSource
def myServiceMethod() {
MyJDBCClass jdbcClass = new MyJDBCClass(dataSource.getConnection())
jdbcClass.savePerson(new PersonDto("Bob"))
Person p = Person.findByFirstName("Bob")
p.firstName = "John"
if (p.firstName == "John") {
throw new RuntimeException("Test rollback of Bob")
}
p.save()
}
myServiceMethod當前使用默認傳播類型:PROPAGATION_REQUIRED(因爲它是服務方法)。
MyJDBCClass是純Java/JDBC,它位於單獨的JAR文件中,理想情況下我們不希望對spring的事務管理有任何依賴。我不確定如何繼續。
謝謝!
如何獲取MyJDBCClass中使用的連接? – 2013-02-22 14:41:50
更新了Q以迴應您的評論。我相信我可能會回答我自己的問題。只要我通過連接並且jdbcClass.savePerson不以任何方式提交,回滾或更改連接,我相信它可以正常工作。我只是想確保這是正確的方法。 – nogridbag 2013-02-22 15:49:56
是的,'dataSource.getConnection()'將與GORM方法所使用的服務方法的連接相同。 – 2013-02-22 16:07:24