代开session有两种方法:
1、openSession只要调用就打开一个新的session,用完后需手动关闭。
2、getCurrentSession用原来已经存在的,拿的是同一个session,如果没有就打开一个新的session,当事物提交后session自动关闭,在界定事物边界时用。
当要用getCurrentSession()时,需在配置文件hibernate.cfg.xml中加入如下代码,常用的有thread、jta:
1、用的最多的是thread,相当于在当前线程中找session。依赖于数据库本身,(如使用JDBC的独立应用程序),在hibernate.cfg.xml中session-factory段加入:
<property name="current_session_context_class">thread</property>
2、jta(java transaction api)当前应用服务器能够提供分布式事物处理,事物由多个数据库连接,运行时需要分布式事物applicationserver(如Jboss)的支持,在hibernate.cfg.xml中session-factory段加入:
<property name="current_session_context_class">jta</property>