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();
			}
		}
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章