SessionFactroy接口负责Hibernate的初始化和建立Session对象。它在Hibernate中起到一个缓冲区的作用,Hibernate可以自动生成的SQL语句、映射数据以及某些可重复利用的数据放到一个缓冲区中。同时他还保存了对数据库配置的所有映射关系,维护了当前的二级缓存。
SessionFactroy实例是通过Configuration对象获取的,其获取方法如下:
SessionFactory sessionFactory = config.buildSeesionFactroy();
SessionFactroy具有以下的特点:
1.它是线程安全的,它的同一个实例能够供多个线程共享。
2.它是重量级的,不能随意的创建和销毁它的实例。
package com.zrrd.lgx.controller;
import org.springframework.context.annotation.Configuration;
public class HibernateUtils {
//声明一个私有的静态final类型的Configuration
private static final Configuration config;
//声明一个私有的静态final类型的SessionFactory对象
private static final SessionFactory factory;
//通过静态代码块构建SessionFactory
static{
config=new Configuration().configure();
factory=config.buildSessionFactroy();
}
//提供一个公有的静态方法供外部获取,并返回一个Session对象
public static Session getSession(){
return factory;
}
}
这种方式实现了session对象只被创建一次,避免了多次加载sessionfactory的负担。
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());
}
}