packagecom.huml.util;importjava.util.ArrayList;importjava.util.Arrays;importorg.hibernate.Transaction;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.cfg.Configuration;public classHibernateUtil {private static finalSessionFactory sf;private static ThreadLocal threadLocal = new ThreadLocal();static{
sf= newConfiguration().configure().buildSessionFactory();
}privateHibernateUtil() {
}public staticSession openSession() {returnsf.openSession();
}public staticSession getcurrentSession() {
Session session=threadLocal.get();if (session == null) {
session=sf.openSession();
threadLocal.set(session);
}returnsession;
}public static voidsave(Object obj) {
Session session=openSession();
Transaction tx= null;try{
tx=session.beginTransaction();
session.save(obj);
tx.commit();
}catch(Exception e) {if (tx != null) {
tx.rollback();
}throw newRuntimeException(e.getMessage());
}finally{if (session != null &&session.isOpen()) {
session.close();
}
}
}
@SuppressWarnings("unchecked")public staticArrayList executeQuery(String hql, String... params) {
Session session=openSession();
Transaction tx= null;
ArrayList list= null;try{
tx=session.beginTransaction();
Query query=session.createQuery(hql);if (params != null && params.length > 0) {for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}
list=(ArrayList) query.list();
tx.commit();
}catch(Exception e) {if (tx != null)
tx.rollback();throw newRuntimeException(e.getMessage());
}finally{if (session != null &&session.isOpen()) {
session.close();
}
}returnlist;
}public static voidexecuteUpdate(String hql, String... params) {
Session session=openSession();
Transaction tx= null;try{
tx=session.beginTransaction();
Query query=session.createQuery(hql);if (params != null && params.length > 0) {for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);//System.out.println("query influenced: "+params[i]);
}
}
System.out.println("query influenced: " +query.getQueryString());int n =query.executeUpdate();
System.out.println("query influence: " +n);
tx.commit();
}catch(Exception e) {if (tx != null)
tx.rollback();throw newRuntimeException(e.getMessage());
}finally{if (session != null &&session.isOpen()) {
session.close();
}
}
}
}