我有两种方法,它们都是注解式@Transactional。

我知道这两种方法将在两个不同的事务中执行。

但是,这两个方法是否可以在一个休眠会话中执行?

Spring事务管理器会一直保持会话状态,直到HTTP请求结束?

我知道交易管理器可能会在其aop代理中执行以下操作:

 Session session=sessionFactory.openSession/getCurrentSession;
 Transaction tx=session.beginTransaction();
 ...
 tx.commit();


我只是找不到代码,如果可以在某个地方找到代码,我可以自己回答这个问题。

最佳答案

Spring事务管理器会一直保持会话状态,直到HTTP请求结束?


不,不会。事务管理器对http请求一无所知,只知道事务的开始和结束(受线程绑定)。交易结束后,Session将被销毁并清除。

除非您使用OpenSessionInViewFilter(或拦截器),否则Session将保持打开状态,直到处理完请求为止。

09-11 20:49