Hibernate里sessionFactory的openSession()和getCurrentSession()的区别

session.openSession()和session.getCurrentSession()两个方法都是得到session对象,但是区别是:

openSession()每次得到的都是新的session对象,用完后要手动close()。

getCurrentSession()是从上下文(上下文有两种:一种是thread,主要是从数据库来界定它的事务;一种是jta,采用分布式来界定它的事务,jta要运行的时候需要applicationserver即应用服务器的支持)找,如果有session对象,则用旧的,如果没有,则建一个新的session,事务提交后自动closeSession()。

注:什么时候要用到currentSession呢,比如在添加用户的时候,是往user表添加一条数据,但如果要在添加user的同时也向日志表添加一条记录,用hibernate来实现的话,这两个添加方法的操作理应放在同一个事务里面,要么同时提交,要么回滚。

你可能感兴趣的:(jvm,Hibernate,应用服务器)