Hibernate工具类Utils

public class HibernateUtils {
private static SessionFactory sf;

static{
//1 创建,调用空参构造
Configuration conf = new Configuration().configure();
//2 根据配置信息,创建 SessionFactory对象
sf = conf.buildSessionFactory();
}

//获得session => 获得全新session
public static Session openSession(){
//3 获得session
Session session = sf.openSession();

return session;

}
//获得session => 获得与线程绑定的session
public static Session getCurrentSession(){
//3 获得session
Session session = sf.getCurrentSession();

return session;
}
public static void main(String[] args) {
System.out.println(HibernateUtils.openSession());

}


/*

在hibernate中,确保使用同一个session的问题,hibernate已经帮我们解决了.
    我们开发人员只需要调用sf.getCurrentSession()session


注意1: 调用getCurrentSession方法必须配合主配置中的一段配置
<!--  指定session与当前线程绑定 --> 
 <property name="hibernate.current_session_context_class">thread</property> 
注意2:通过getCurrentSession方法获得的session对象.当事务提交时,
session会自动关闭.不要手动调用close关闭.
*/

public static Session getSession() {
Configuration configuration=new Configuration().configure();
sf= configuration.buildSessionFactory();
Session session = sf.getCurrentSession();
return session;
}


}
















========================5.2.x新工具类==============================

 /**
         * 5.2.1配置的方法
         */
        StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
        SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();
        Session session = sessionFactory.openSession();
        // 4、通过Session对象得到Transaction
        Transaction tx = session.beginTransaction();
        // 5、保存输出
        Student user = new Student();
        user.setName("小米");
        user.setNo("060814");
        session.save(user);
        // 6、提交事务
        tx.commit();
        // 7、关闭session
        session.close(); 


猜你喜欢

转载自blog.csdn.net/yan12422/article/details/78348239