package com.wxh.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import com.wxh.dto.Student;
public class Test {
/**
* openSession:每次都会从sessionFactory获取一个新的session对象,使用完成后需要手动调用close对session关闭
* getCurrentSession:从当前线程中获取session对象,如果线程中存在session则使用,
* 如果不存在则创建。 不需要手动调用close方法关闭,因为一旦事务提交,则会自动关闭session
* 使用线程中的session时需要在核心配置文件中配置:
* current_session_context_class:thread 本地事务
* <property name="current_session_context_class">thread</property>
* 或
* current_session_context_class:jta 全局事务
* @param args
*/
public static void main(String[] args) {
Configuration cfg=new AnnotationConfiguration().configure();
SessionFactory factory=cfg.buildSessionFactory();
//Session session=factory.openSession();
Session session=factory.getCurrentSession();
session.beginTransaction();
Student stu=(Student)session.get(Student.class, 2);
session.getTransaction().commit();
}
}
hibernate中 openSession和getCurrentSession的区别
最新推荐文章于 2019-12-02 22:02:37 发布