1Hibernate的单例模式---HibernateUtils.java
package hibernate.utils; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * Hibernate框架的工具类 * @author Administrator */ public class HibernateUtils { // ctrl + shift + x private static final Configuration CONFIG; private static final SessionFactory FACTORY; // 编写静态代码块 static{ // 加载XML的配置文件 CONFIG = new Configuration().configure(); // 构造工厂 FACTORY = CONFIG.buildSessionFactory(); } /** * 从工厂中获取Session对象 * @return */ public static Session getSession(){ return FACTORY.openSession(); } }
通过这个工具类,我们就可以对对象进行增删改查(save()、delete()、update()、updateOrSave())操作。
2.关于线程安全问题,我看过一片文章,还挺好的。
SessionFactory就是一个用于创建Hibernate的Session对象的工厂。SessionFactory通常是在应用启动时创建好的,应用程序中的代码用它来获得Session对象。作为一个单个的数据存储,它也是 线程安全的,所以多个线程可同时使用同一个SessionFactory。Java JEE应用一般只有一个SessionFactory,服务于客户请求的各线程都通过这个工厂来获得Hibernate的Session实例,这也是为什么SessionFactory接口的实现必须是线程安全的原因。还有,SessionFactory的内部状态包含着同对象关系影射有关的所有元数据,它是 不可变的,一旦创建好后就不能对其进行修改了。