Java 在视图中打开会话vs@Transactional

Java 在视图中打开会话vs@Transactional,java,spring,hibernate,transactions,open-session-in-view,Java,Spring,Hibernate,Transactions,Open Session In View,我一直在我的服务层中使用@Transactional注释。但为了解决视图中延迟加载导致的错误,我必须使用opensessioninview过滤器。在此之后,不使用@Transaction本身,将打开会话并启动事务。那么这是否意味着不需要@Transactions?那么在服务层中如何处理事务和回滚呢?对此进行了解释: 此筛选器使Hibernate会话通过当前线程可用,事务管理器将自动检测到该线程。它适用于通过HibernateTransactionManager或JtaTransactionMan

我一直在我的服务层中使用
@Transactional
注释。但为了解决视图中延迟加载导致的错误,我必须使用
opensessioninview过滤器
。在此之后,不使用@Transaction本身,将打开会话并启动事务。那么这是否意味着不需要@Transactions?那么在服务层中如何处理事务和回滚呢?

对此进行了解释:

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

注意:默认情况下,此筛选器不会刷新Hibernate会话,刷新模式设置为FlushMode.NEVER。它假定与关心刷新的服务层事务结合使用:在读写事务期间,活动事务管理器将临时将刷新模式更改为FlushMode.AUTO,并且在每个事务结束时将刷新模式重置为FlushMode.NEVER。如果您打算在不使用事务的情况下使用此筛选器,请考虑更改默认刷新模式(通过“FLUSMODE”属性)。
我不明白。这是否意味着我不应该在服务层中使用@Transactional。你能用一种更好的方式解释吗?或者可能是某种联系方式。这意味着您应该像往常一样使用@Transactional对服务层进行编码。不同之处在于,即使事务已提交,会话仍将保持打开状态。