在Spring中,由划定的业务交易
@Transactional与hibernate之间存在一一对应的关系
Session。
也就是说,当通过调用
@Transactional方法开始业务交易时,将创建hibernate会话(TransactionManager可能将实际创建延迟到首次使用该会话之前)。该方法完成后,将提交或回滚业务事务,这将关闭hibernate会话。
在您的情况下,这意味着调用DAO方法将开始一个新的事务(除非某个事务已经在进行中),退出DAO方法将结束它,这将关闭hibernate会话,并刷新它,并提交或滚动返回相应的hibernate事务,然后提交或回滚相应的JDBC事务。
对于这种典型用法,hibernate文档将此称为每次操作会话反模式。同样,
@Transactionalspring参考手册中的所有示例都放在业务服务方法(或类)上,而不是存储库上。



