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());
}
}