JDBCを使用してDBにデータを保存するためにプレーンJavaクラスを呼び出すGrailsサービスメソッドがあります。次に、grailsサービスメソッドも同じDBに書き込みます。これはすべて同じトランザクションで発生するはずです。
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のトランザクション管理に依存することは理想的ではありません。どうすればいいのかよくわかりません。
ありがとう!