先是看一下现在刚刚遇到的,hibernate4的sessionfactory的创建方法,跟hibernate3区别还是挺大的;
package com.ynwi.ssh.daoImpl;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateSessionFactory {
//指定对应的配置文件
private static final String CFG_FILE_LOCATION = "/Hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static final Configuration cfg = new Configuration()
.configure(CFG_FILE_LOCATION);
private static ServiceRegistryBuilder builder = new ServiceRegistryBuilder()
.applySettings(cfg.getProperties());
private static ServiceRegistry registry;
private static SessionFactory sessionFactory;
public static Session currentSession() throws HibernateException {
Session session = threadLocal.get();
if (session == null || session.isOpen() == false) {
if (sessionFactory == null) {
try {
registry = builder.buildServiceRegistry();
sessionFactory = cfg.buildSessionFactory(registry);
} catch (Exception e) {
e.printStackTrace();
}
}
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
}
下面再看看hibernate3的:
public class HibernateSessionFactory {
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
//如果hibernate.cfg.xml在默认位置可以不指定
private static final Configuration cfg = new Configuration() .configure();
private static SessionFactory sessionFactory;
public static Session currentSession() throws HibernateException {
Session session = threadLocal.get();
if (session == null || session.isOpen() == false) {
if (sessionFactory == null) {
try {
sessionFactory = cfg.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}