我使用Grails Hibernate事务在Controller Action中执行以下操作:
user.save(flush:true)
User.withTransaction {
user.name = "newName"
user.save(flush: true)
}
在这种情况下,Hibernate / Grails会做什么?当我在第一次刷新时刷新休眠 session 时,withTransaction是否会创建一个新 session ,还是将两个保存附加到一个 session 中?
最佳答案
如果它是在 Controller Action 中,那么自从OpenSessionInView拦截器在请求开始时就为您启动以来,整个时间都会有一个Hibernate session 打开。 withTransaction
调用使用当前的线程本地 session 。
请注意,事务将刷新 session ,因此无需显式执行该操作。还要注意,您实际上不应该使用事务和其他持久性(或业务)逻辑来污染 Controller 代码-此代码应采用事务服务方法。
关于hibernate - Grails的交易范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908746/