3

我一直@Transactional在我的服务层中使用注释。但是要解决由于视图中延迟加载导致的错误,我必须使用Open Session in View Filter. 在此之后,不使用 @Transaction 本身就会打开一个 Session 并开始事务。那么这是否意味着不需要@Transactions?那么在服务层中如何处理事务和回滚呢?

4

1 回答 1

3

javadoc对此进行了解释:

此过滤器使 Hibernate Sessions 通过当前线程可用,事务管理器将自动检测到该线程。它适用于通过 HibernateTransactionManager 或 JtaTransactionManager 的服务层事务以及非事务性执行(如果配置得当)。

注意:默认情况下,此过滤器不会刷新 Hibernate 会话,刷新模式设置为 FlushMode.NEVER。它假设与关心刷新的服务层事务结合使用:活动事务管理器将在读写事务期间临时将刷新模式更改为 FlushMode.AUTO,最后刷新模式重置为 FlushMode.NEVER每笔交易。如果您打算在没有事务的情况下使用此过滤器,请考虑更改默认刷新模式(通过“flushMode”属性)。

于 2013-05-09T15:25:47.623 回答