java – 声明式事务与程序化事务
发布时间:2020-12-15 04:28:38 所属栏目:Java 来源:网络整理
导读:如果我们选择程序化交易,我们会写 Session session=sessiongFactory.openSession();Transaction tx=session.buildTransaction(); 对于会话,我们可以构建我们想要的尽可能多的事务. 所以,我们有第一个会话对象而不是事务对象. 在声明式事务中,如果我们在服务
如果我们选择程序化交易,我们会写
Session session=sessiongFactory.openSession(); Transaction tx=session.buildTransaction(); 对于会话,我们可以构建我们想要的尽可能多的事务. 所以,我们有第一个会话对象而不是事务对象. 在声明式事务中,如果我们在服务级别声明@Transaction注释. Session session=sessiongFactory.getCurrentSession(); 在这里我们有第一次Transation然后Session, 任何人都可以帮助我理解,Spring如何管理这个声明性交易. 解决方法
根据文档方法,sessiongFactory.getCurrentSession()获取当前会话,“当前会话”意味着由配置使用的CurrentSessionContext impl控制.
文档还提供了向后兼容性的说明:如果未配置CurrentSessionContext但配置了JTA TransactionManagerLookup,则默认为JTASessionContext impl. 如果JTA事务生效,JTASessionContext实现将根据需要生成Sessions.如果在调用currentSession()时会话尚未与当前JTA事务关联,则将打开一个新会话,它将与该JTA事务关联. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |