单例的设计模式保证内存中有且只有一个对象,主要用于,消耗大量内存并且需要频繁创建的对象,例如hibernate中,使用单例模式封装SessionFactory
package base.util;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static final SessionFactory sf = buildSessionFactory();
public static SessionFactory buildSessionFactory() {
try{
Configuration configuration = new Configuration().configure();
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
SessionFactory sessionFactory = configuration.buildSessionFactory(ssr);
return sessionFactory;
}
catch(Throwable error){
System.err.println("Initial SessionFactory creation failed." + error);
throw new ExceptionInInitializerError(error);
}
}
public static SessionFactory getSessionFactory(){
return sf;
}
}
如此,每次启动程序 都会初始化一次SessionFactory,并且使sf常驻内存中,这样避免了每次使用都要重新创建工厂。
以下一个测试方法:
public void saveuser(User u) {
Session session=HibernateUtils.getSessionFactory().getCurrentSession();
//开启事务
session.beginTransaction();
session.save(u);
//提交事务
session.getTransaction().commit();
}
只需要调用封装类中的getSessionFactory方法即可