我有两种方法,它们都是注释@Transactional。
我知道这两个方法将在两个不同的事务中执行。
但这两种方法是在一个hibernate会话中执行的吗?
spring transaction manager会保持会话开启直到http请求结束吗?
我知道事务管理器可以在它的aop代理中执行类似的操作:
Session session=sessionFactory.openSession/getCurrentSession;
Transaction tx=session.beginTransaction();
...
tx.commit();
我找不到代码,如果我能在某处找到代码,我可以自己回答这个问题。
答案 0 :(得分:2)
spring transaction manager会保持会话开启直到http请求结束吗?
不,不会。事务管理器对http请求一无所知,它只知道事务的开始和结束(这是线程绑定的)。交易结束后,Session
将被销毁并清除。
除非您使用OpenSessionInViewFilter
(或拦截器),否则Session
将保持打开状态,直到处理完请求为止。