您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

grails中的withTransaction和withSession有什么区别?

grails中的withTransaction和withSession有什么区别?

withTransaction有点骇人听闻,因为它允许您在任何地方进行事务处理工作,但是最好将您的疑虑分开并在事务处理服务中进行工作。认情况下,服务是事务性的,除非您添加了该服务,static transactional = false并且可以使用@Transactional注释在类和/或方法级别对其进行微调。您只需将代码放入服务方法中而不使用withTransaction或就可以了withSession

withSession是访问当前HibernateSession(通常由OpenSessionInView拦截注册的一种)的一种便捷方法。如果您想清除会话或执行GORM未公开的其他工作,则可以通过这种方式访问??它,而无需访问sessionFactorySpring使用的或线程本地持有人。

withTransaction在事务服务方法之外,一种有效的用法是在Session控制器请求之外(即,当没有自动创建时Session)绑定Hibernate 。withTransaction将启动一个事务并创建一个Session需要的事务,并在关闭期间保持打开状态。因此,您可以使用它来避免延迟加载异常。对于那些仅从数据库中读取而无需事务性写入的情况,我们需要另一种方法来实现此目的而无需事务处理开销。但是目前,这种方法行之有效。但是,如果您执行数据库写操作,请将代码移至服务方法

其他 2022/1/1 18:16:18 有554人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶