hibernatefacade.java

来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 351 行

JAVA
351
字号
/* 
 * Created on 2007-1-20
 * Last modified on 2008-1-7
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.dao.hibernate.support;

import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.yeqiangwei.club.dao.hibernate.ConnectionManager;
import com.yeqiangwei.club.exception.DAOException;

public class HibernateFacade<Item> implements HibernateProvider<Item>{
	
	private static final Logger logger = Logger.getLogger(HibernateFacade.class);
	
	private Session session;
	
	private Transaction tran;

	private Query query;
		
	public HibernateFacade() throws DAOException{
		try{
			session = ConnectionManager.getSession();
		}catch(HibernateException e){
			throw new DAOException(e.toString());
		}
	}

	public Session getSession() throws DAOException{
		if(session==null){
			try{
				session = ConnectionManager.getSession();
			}catch(HibernateException e){
				throw new DAOException(e.toString());
			}
		}
		return session;
	}
	
	public void flush() throws DAOException{
		try{
			this.getSession().flush();
		}catch(HibernateException e){
			throw new DAOException(e.toString());
		}
	}

	public HibernateFacade(Object o){
		if(session==null){
			try{
				session = ConnectionManager.getSession();
			} catch (DAOException e) {
				logger.error(e.toString());
			}
		}
	}
	
	public HibernateFacade(String sql){
		if(session==null){
			logger.debug("session insteance:"+sql);
			session = ConnectionManager.getSession();
		}
		this.query = this.createQuery(sql);
	}
	
	public void commitTransaction() throws DAOException{
		if(tran!=null){
			try{
				ConnectionManager.commitTransaction();
			}catch(HibernateException e){
				logger.error(e.toString());
				throw new DAOException(e.toString());
			}
		}else{
			logger.error("Transaction is Null");
		}
	}
	
	public void  rollback() throws DAOException{
		if(tran!=null){
			try{
				ConnectionManager.rollbackTransaction();
			}catch(HibernateException e){
				logger.error(e.toString());
				throw new DAOException(e.toString());
			}
		}else{
			logger.error("Transaction is Null");
		}
	}
	
	public Transaction beginTransaction() throws DAOException{
		try{
			return tran = ConnectionManager.beginTransaction();
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	public void save(Item item) throws DAOException{
		logger.debug("save:"+item.getClass().getName());
		try{
			this.getSession().save(item);
			this.getSession().flush();
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	public void saveOrUpdate(Item item) throws DAOException{
		logger.debug("saveOrUpdate:"+item.getClass().getName());
		try{
			this.getSession().saveOrUpdate(item);
			this.getSession().flush();
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	public void update(Item item) throws DAOException{
		logger.debug("update:"+item.getClass().getName());
		try{
			this.getSession().update(item);
			this.getSession().flush();
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	public Query setFirstResult(int i){
		try{
			return query.setFirstResult(i);
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	public Query setFetchSize(int i){
		try{
			return query.setFetchSize(i);
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	public Query setMaxResults(int c){
		try{
			return query.setMaxResults(c);
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}

	@SuppressWarnings("unchecked")
	public Item uniqueResult(){
		try{
			return (Item)query.uniqueResult();
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	@SuppressWarnings("unchecked")
	public List<Item> executeQuery(){
		try{
			return query.list();
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	@SuppressWarnings("unchecked")
	public long resultTotal(){
		long c = 0;
		try{
			Iterator<Long> it = query.iterate();
	        while(it.hasNext()){
	        	Long results  = (Long) it.next();
	            c = results.longValue();
	        }
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
		return c;
	}
	@SuppressWarnings("unchecked")
	public int resultTotalInteger(){
		int c = 0;
		try{
			Iterator it = query.iterate();
	        while(it.hasNext()){
	        	Integer results = (Integer) it.next();
	            c = results.intValue();
	        }
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
		return c;
	}
	@SuppressWarnings("unchecked")
	public Iterator iterate(){
		try{
			return query.iterate();
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	public int executeUpdate() throws DAOException{
		try{
			return query.executeUpdate();
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}

	public Query createQuery(String sql){
		logger.debug("createQuery:"+sql);
		try{
			return query = session.createQuery(sql);
		}catch(HibernateException e){
			logger.error(e.toString());
			throw new DAOException(e.toString());
		}
	}
	
	public Query createQuery(StringBuffer sql){
		return createQuery(sql.toString());
	}
	
	public void setCacheable(boolean bea){
		query.setCacheable(bea);
	}
	
	public void setCacheRegion(String str){
		query.setCacheRegion(str);
	}
	
	public void setByte(String name, Byte value){
		query.setByte(name,value);
	}
	
	public void setByte(int name, Byte value){
		query.setByte(name,value);
	}
	
	public void setShort(String name, Short value){
		query.setShort(name,value);
	}
	
	public void setShort(int name, Short value){
		query.setShort(name,value);
	}
	
	public void setBoolean(String name, Boolean value){
		query.setBoolean(name,value);
	}
	
	public void setBoolean(int name, Boolean value){
		query.setBoolean(name,value);
	}
	
	public void setString(String name, String value){
		query.setString(name,value);
	}
	
	public void setString(int name, String value){
		query.setString(name,value);
	}
	
	public void setLong(String name, long value){
		query.setLong(name, value);
	}
	
	public void setLong(int name, long value){
		query.setLong(name,value);
	}
	
	public void setInt(String name, int value){
		query.setInteger(name, value);
	}
	
	public void setInt(int name, int value){
		query.setInteger(name,value);
	}

	public void setInt(String name, Integer value){
		query.setInteger(name, value);
	}
	
	public void setInt(int name, Integer value){
		query.setInteger(name,value);
	}
	
	public void setParameterList(String name, Object[] obj){
		query.setParameterList(name, obj);
	}
	
	@SuppressWarnings("unchecked")
	public void setParameterList(String name, List list){
		query.setParameterList(name, list);
	}
	
	public Query getQuery() {
		return query;
	}

	public void setQuery(Query query) {
		this.query = query;
	}

	public Transaction getTransaction() {
		return tran;
	}

	public void setTransaction(Transaction tran) {
		this.tran = tran;
	}
	
	public SQLQuery createSQLQuery(String hql) throws DAOException {
		try {
			return this.getSession().createSQLQuery(hql);
		} catch (HibernateException e) {
			throw new DAOException(e.toString());
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?