如何获取session对象?
1)openSession
2)getCurrentSession
如果使用getCurrentSession需要在hibernate.cfg.xml文件中进行配置:
如果是本地事务(jdbc事务)
<property name="hibernate.current_session_context_class">thread</property>
如果是全局事务(jta事务)
<property name="hibernate.current_session_context_class">jta</property>
如下:
@Test
public void testOpenSession(){
//获取配置对象
Configuration config = new Configuration().configure();
//获取服务注册对象下面的方法4.3中已经过时
//ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
//获取sessionFactory对象
SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
//获取session对象
Session session = sessionFactory.openSession();
if(session!=null){
System.out.println("session创建成功");
}
else
{
System.out.println("session创建失败");
}
}
/*下面这个方式需要在Hibernate.cfg.xml文件中配置
/<property name="hibernate.current_session_context_class">thread</property>*/
@Test
public void testGetCurrentSession(){
//获取配置对象
Configuration config = new Configuration().configure();
//获取服务注册对象下面的方法4.3中已经过时
//ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
//获取sessionFactory对象
SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
//获取session对象
Session session = sessionFactory.getCurrentSession();
if(session!=null){
System.out.println("session创建成功");
}
else
{
System.out.println("session创建失败");
}
}