一、环境
SSH环境,查询用的是基于Hibernate的配置文件构建了一个SessionFactory,主要代码如下
public class HibernateUtil { private static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); private static Configuration configuration = null; public static SessionFactory sessionFactory; static { try { configuration = new Configuration().configure("/hibernate.cfg.xml"); sessionFactory = configuration.buildSessionFactory(); } catch (HibernateException e) { System.out.println("解析xml和创建Session工厂error"); e.printStackTrace(); } } public static Session getSession() { Session session = threadLocal.get(); if (session == null) { session = sessionFactory.openSession(); threadLocal.set(session); } //Session session=sessionFactory.getCurrentSession(); return session; } // ThreadLocal可以隔离多个线程的数据共享,因此不再需要对线程同步 public static final ThreadLocal<Session> session = new ThreadLocal<Session>(); //创建Session public static Session currentSession() throws HibernateException { //通过线程对象.get()方法安全创建Session Session s = session.get(); // 如果该线程还没有Session,则创建一个新的Session if (s == null) { s = sessionFactory.openSession(); // 将获得的Session变量存储在ThreadLocal变量session里 session.set(s); } return s; } //关闭Session public static void closeSession() throws HibernateException { Session s = session.get(); if (s != null) s.close(); session.set(null); } }