Hibernate工具类
package com.zh.util;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
final public class HibernateUtil {
private static SessionFactory sessionFactory = null;
private static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private HibernateUtil(){}
static{
sessionFactory = new Configuration().configure().buildSessionFactory();
}
//获取全新的Session
public static Session openSession() {
return sessionFactory.openSession();
}
//获取和线程关联的Session
public static Session getCurrentSession() {
Session session = threadLocal.get();
if(session==null) {
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
//提供统一的查询方法
public static List executeQuery(String hql, String[] parameters) {
Session session = openSession();
List list = null;
try {
Query query = session.createQuery(hql);
if(parameters!=null && parameters.length>0){
for (int i = 0; i < parameters.length; i++) {
query.setString(i, parameters[i]);
}
}
list = query.list();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
}if(session!=null && session.isOpen()) {
session.close();
}
return list;
}
//提供统一带分页的查询方法
//统一的添加方法
public static void save(Object obj) {
Session session = null;
Transaction tx = null;
try {
session = openSession();
tx = session.beginTransaction();
session.save(obj);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
if(tx!=null) {
tx.rollback();
}
}finally {
if(session!=null && session.isOpen()) {
session.close();
}
}
}
//统一的修改和删除(批量 hql)
public static void executeUpdate(String hql, String [] parameters) {
Session session = openSession();
Transaction tx = null;
List list = null;
try {
tx = session.beginTransaction();
Query query = session.createQuery(hql);
if(parameters!=null && parameters.length>0){
for (int i = 0; i < parameters.length; i++) {
query.setString(i, parameters[i]);
}
}
query.executeUpdate();
tx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
if(tx!=null) {
tx.rollback();
}
}finally{
}if(session!=null && session.isOpen()) {
session.close();
}
}
}