我一直@Transactional
在我的服务层中使用注释。但是要解决由于视图中延迟加载导致的错误,我必须使用Open Session in View Filter
. 在此之后,不使用 @Transaction 本身就会打开一个 Session 并开始事务。那么这是否意味着不需要@Transactions?那么在服务层中如何处理事务和回滚呢?
问问题
2527 次
1 回答
3
javadoc对此进行了解释:
此过滤器使 Hibernate Sessions 通过当前线程可用,事务管理器将自动检测到该线程。它适用于通过 HibernateTransactionManager 或 JtaTransactionManager 的服务层事务以及非事务性执行(如果配置得当)。
注意:默认情况下,此过滤器不会刷新 Hibernate 会话,刷新模式设置为 FlushMode.NEVER。它假设与关心刷新的服务层事务结合使用:活动事务管理器将在读写事务期间临时将刷新模式更改为 FlushMode.AUTO,最后刷新模式重置为 FlushMode.NEVER每笔交易。如果您打算在没有事务的情况下使用此过滤器,请考虑更改默认刷新模式(通过“flushMode”属性)。
于 2013-05-09T15:25:47.623 回答