这个问题与我提出的另一个question有关,但是为什么你会使用openSession()而不是getCurrentSession()的原因是什么?我知道你会使用openSession(),这样你就可以自行管理会话的结束和刷新,但是,你为什么要手动完成这个呢?
我想在当前会话中单独执行事务时使用了openSession(),虽然我不确定这是否正确使用了openSession()。
为什么要打开多个会话?
答案 0 :(得分:4)
我知道你会使用openSession(),这样你就可以自行管理会话的结束和刷新,但是,你为什么要手动完成这个呢?
可以使用openSession()
来实现long conversations(即,当您想要使用单个会话来多个数据库事务,也就是扩展时会话模式)。
嗯......什么?交易和会话是不同的概念。你到底是什么意思?我想在当前会话中单独执行事务时使用了openSession(),虽然我不确定这是否正确使用了openSession()。
为什么要打开多个会话?
这不是意图。
答案 1 :(得分:0)
我们知道有两种方法可以从SessionFactory类创建/获取会话。 1)使用opensSession()方法和getCurrentSession()方法。
这些是以下差异,
openSession():-
它将创建新的Session对象。
您需要显式刷新和关闭会话对象。
getCurrentSession():-
如果会话不存在,它将创建一个新的会话,否则它将使用当前休眠上下文中的相同会话。
无需刷新和关闭会话对象,Hibernate会自动在内部对其进行处理。