gpt4 book ai didi

grails - 将声明性的Spring事务(Grails服务)传播到纯JDBC代码

转载 作者:行者123 更新时间:2023-12-02 14:53:51 27 4
gpt4 key购买 nike

我有一个Grails服务方法,该方法调用一个普通的Java类,以使用JDBC将一些数据保存到DB中。接下来,grails服务方法也将写入同一数据库。这都应该在同一笔交易中发生。

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的事务管理。我不太确定如何进行。

谢谢!

最佳答案

如注释中所述,使用dataSource.getConnection()可以使用动态GORM方法使用的连接。

还要注意,这是声明groovy.sql.Sql实例的正确方法:

sql = new Sql(dataSource.getConnection())

如果你声明像
sql = new Sql(dataSource)

您的sql命令有可能使用不同的连接(在Oracle数据库中与我联系)。

另一种可能性是使用 cacheConnection闭包,以确保groovy sql的所有执行都将使用相同的连接。

关于grails - 将声明性的Spring事务(Grails服务)传播到纯JDBC代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008060/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com