Session的创建是一个很重的事情,如果每次运行就创建一个session对象,那么这段程序的运行速度一定很慢。所以,我们基于上段代码给Session用静态代码块的方式实现单例模式。
在文件夹添加一个HibernateUtils类
package com.hust.Fubo; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static final Configuration config; private static final SessionFactory factory; static { config = new Configuration().configure(); factory = config.buildSessionFactory(); } public static Session getSession(){ return factory.getCurrentSession(); } }
这样的方式实现了session对象只被创建一次,避免了多次加载sessionfactory的负担。
package com.hust.Fubo; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; public class TestDemo { @Test public void selectStu(){ Session session = HibernateUtils.getSession(); Transaction t = session.beginTransaction(); Student s = (Student) session.get(Student.class,1); System.out.println(s.toString()); } }