openSession
1、只要调用一次openSession方法都会打开一个新的连接
2、这种方式效率不是很高
3、利用这种方式很容器的就可以操作session的缓存
getCurrentSession
1、把session放入到threadlocal中,确保线程安全
2、在整个线程中可以共享session,并且该session只有一个
3、在threadlocal中存放Map<SessionFactory,Session>,
因为整个hibernate应用sessionFactory只有一个,所以session肯定只有一个
getCurrentSession使用
步骤1:在hibernate.cfg.xml文件中配置
步骤2:获取当前线程的session
Session session = sessionFactory.getCurrentSession();
Transaction transaction = session.beginTransaction();
Person person = (Person)session.get(Person.class, 2L);
transaction.commit();
说明:
1、crud操作都必须在事务的条件下进行
2、当事务提交,session自动关闭