首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring/Hibernate,两个物理事务之间的共享会话

Spring/Hibernate,两个物理事务之间的共享会话
EN

Stack Overflow用户
提问于 2018-04-05 14:17:44
回答 1查看 661关注 0票数 0

Spring和Hibernate是否支持两个不同的(嵌套或排序)物理事务之间的会话共享?

我知道Spring支持嵌套事务,但它与保存点是相同的物理事务,即嵌套事务在逻辑上是分开的:

来自Spring文档:

PROPAGATION_NESTED使用具有多个保存点的单个物理事务,可以回滚回滚。

因此,我能否获得类似于以下内容的行为:

代码语言:javascript
复制
@Transactional
void invokeOuterTransaction() {
    invokeInnerTransaction();
}
@Transactional
void invokeInnerTransaction() {
    // here are the same Session as in 'invokeOuterTransaction', 
    // but this transaction is new PHYSICAL transaction
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-05 22:10:19

因此,使用下面的安装程序探索这个问题,我发现Hibernate会话“每个请求”而不是“每个事务”非常有趣。

安装程序: Hibernate 5,Spring 5,PostgreSQL

下面是一个类似java的快速伪代码,简称:

代码语言:javascript
复制
@Controller {
    @Inject FirstService fServ;
    @Inject SecondService sServ;

    @RequestMapping
    handleHttpRequest() {
          fServ.invokeFirstTransactional();
          sServ.invokeSecondTransactional();
    }
}
FirstService {
   @Transactional
   void invokeFirstTransactional() {
        // Session object system hashcode = 187000543
        // Thread object system hashcode = 167000522

        // Transaction_ID in database = 650
   }
}
SecondService {
   @Transactional
   void invokeSecondTransactional() {
        // Session object system hashcode = 187000543
        // Thread object system hashcode = 167000522

        // Transaction_ID in database = 651
   }
}

正如您所看到的-相同的Hibernate会话,相同的线程,但不同的物理事务!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49674633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档