在下面的应用示例中,我使用JPA,@ Transactal spring annotation和jta进行事务处理。
如果我正确理解了session-per-request-with-detached-object:
- http请求即将来临
- 注释@Transactional的方法#1:使用openSession()打开会话并绑定到jta上下文,打开一个事务
- 方法完成,还有事务:会话关闭,持久化上下文被清除。
- 已完成对多个Web服务的调用
- 执行注释@Transactionnal的方法#2:使用getCurrentSession()获取会话,并打开新事务。如果我想保存它们,我必须重新附加会话中的所有修改数据。
所以我的问题是:为什么我们不会在第一次交易结束后让会话开启。所以在第二个事务中,我们不会有te合并对象:它可以将一些“select”查询保存到数据库中。
...