hql和criteria以及hibernate模版
***************************
HibernateUtil.java
***************************
package blog.hibernate; import java.util.Date; import java.util.List; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.criterion.Restrictions; import blog.hibernate.domain.User; public final class HibernateUtil { private static SessionFactory sessionFactory; private HibernateUtil(){} static{ Configuration cfg = new Configuration(); sessionFactory = cfg.configure("hibernate.cfg.xml").buildSessionFactory(); } public static SessionFactory getSessionFactory(){ return sessionFactory; } public static Session getSession(){ return sessionFactory.openSession(); } public static Object get(Class clazz,int Id) throws Exception { Session session = null; Object object = null; try { session = getSession(); object = session.get(clazz, Id); //object = session.load(class, userId); return object; } catch (HibernateException e) { e.printStackTrace(); throw e; }finally{ session.close(); } } public static void add(Object object) throws Exception { Session session = null; Transaction tx = null; try { session = getSession(); tx = session.beginTransaction();// 相当于tx =session.getTransaction();tx.begin(); session.save(object); tx.commit(); } catch (HibernateException e) { if (tx != null) { tx.rollback(); } throw e; } finally { if (session != null) { session.close(); } } } public static void update(Object object) throws Exception { Session session = null; Transaction tx = null; try { session = getSession(); tx = session.beginTransaction();// 相当于tx =session.getTransaction();tx.begin(); session.update(object); tx.commit(); } catch (HibernateException e) { if (tx != null) { tx.rollback(); } throw e; } finally { if (session != null) { session.close(); } } } public static void delete(Object object) throws Exception { Session session = null; Transaction tx = null; try { session = getSession(); tx = session.beginTransaction();// 相当于tx =session.getTransaction();tx.begin(); session.delete(object); tx.commit(); } catch (HibernateException e) { if (tx != null) { tx.rollback(); } throw e; } finally { if (session != null) { session.close(); } } } /** * 用HQL实现 * @param username * @return User */ public static User get(String username){ Session session = null; try { session = getSession(); //1、String hql = "from User as user where user.name = ?";//User 为类 而不是表名 String hql = "from User as user where user.name =:name"; Query query = session.createQuery(hql); //1、query.setString(0, username); query.setString("name", username); User user = (User)query.uniqueResult(); List<User> users = query.list(); /*//用于分页,可以针对不同的数据库 query.setFirstResult(0); query.setMaxResults(10);*/ return user; } catch (HibernateException e) { throw e; } finally { if (session != null) { session.close(); } } } /** * 用Criteria接口实现 * @param username * @return List<User> */ @SuppressWarnings("unchecked") public static List<User> query(){ Session session = null; try { session = getSession(); Criteria criteria = session.createCriteria(User.class); //criteria.add(Restrictions.eq("name",username)); criteria.add(Restrictions.lt("birthday", new Date())); List<User> users = criteria.list(); /*//分页 criteria.setFirstResult(0); criteria.setMaxResults(10);*/ return users; } catch (HibernateException e) { throw e; } finally { if (session != null) { session.close(); } } } }