IT序号网

hibernate之Grails的交易范围

yyy_WW 2025年12月25日 编程语言 29 0

我使用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 代码-此代码应采用事务服务方法。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!