无需交易即可获取数据

时间:2017-03-16 10:42:34

标签: java spring hibernate jpa transactions

以下是带有spring事务的示例代码段。我的问题: - 是否会使用相同的会话来获取第1行和第2行的实体?

我的理解: - 我相信是的,春季交易将确保这一点

@Transactional()
    public void method1(
     //fetch entity1 from dao  with the help of entity manager//line 1

     // fetch entity2 from dao with the help of entity manager//line 2

    // now I fetch thru method entity.fetchLazyField()// line 3
    )

现在,如果我删除@Transactional()。我相信只要获取entity1就会关闭会话,并且会为line2使用单独的会话。对吗?

在第3行(删除@Transactional一次),我是否能够获取数据或会话被关闭异常应该被抛出?

我没有粘贴大的xml配置并完成dao代码,只需用实体管理器获取etity。事务传播属性为Required

1 个答案:

答案 0 :(得分:1)

  

同一会话是否用于获取第1行和第2行的实体?

是的,你是对的(假设你使用PersistenceContextType.EXTENDED

  

现在,如果我删除@Transactional()。我相信会议将被关闭   一旦获取了entity1,将使用单独的会话   2号线。对吗?

我不这么认为,但请检查thisthis