Hibernate常用的BaseDao

package org.accp.house.dao.hbimpl;

import java.io.Serializable;
import java.util.List;

import org.accp.house.dao.ICommonDao;
import org.accp.house.dao.IHibernateCallback;
import org.accp.house.hibernateutil.HibernateSessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class BaseDao implements ICommonDao {

/**保存一個臨時對象[用戶]*/
@Override
public void persist(Object obj) {
  // TODO Auto-generated method stub
  Session session = null;
  Transaction ts = null;
 
  try {
   session = HibernateSessionFactory.getSession();
   ts = session.beginTransaction();
  
   session.save(obj);
  
   ts.commit();
  } catch(Exception e){
   ts.rollback();
   throw new RuntimeException(e.getMessage());
  } finally {
   if (session!=null) session.close();
  }
 
}

@Override
public void remove(Object obj) {
  // TODO Auto-generated method stub
  Session session = null;
  Transaction ts = null;
 
  try {
   session = HibernateSessionFactory.getSession();
   ts = session.beginTransaction();
  
   session.delete(obj);
  
   ts.commit();
  } catch(Exception e){
   ts.rollback();
   throw new RuntimeException(e.getMessage());
  } finally {
   if (session!=null) session.close();
  }
}

@Override
public void update(Object obj) {
  // TODO Auto-generated method stub
  Session session = null;
  Transaction ts = null;
 
  try {
   session = HibernateSessionFactory.getSession();
   ts = session.beginTransaction();
  
   session.update(obj);
  
   ts.commit();
  } catch(Exception e){
   ts.rollback();
   throw new RuntimeException(e.getMessage());
  } finally {
   if (session!=null) session.close();
  }
 
}

public Object getObject(Class entityClass,Serializable oid){
  Session session = null;
  try {
   session = HibernateSessionFactory.getSession();
   return session.get(entityClass, oid);
  } catch (Exception e) {
   throw new RuntimeException(e.getMessage());
  } finally {
   if (session!=null) session.close();
  }
}

@Override
public List findAll(Class entityClass) {
  // TODO Auto-generated method stub
  Session session = null;
  try {
   session = HibernateSessionFactory.getSession();
   return session.createQuery("from "+entityClass.getName()).list();
  } catch (Exception e) {
   throw new RuntimeException(e.getMessage());
  } finally {
   if (session!=null) session.close();
  }
}

public Object execute(IHibernateCallback hibernateCallback){
  Session session = null;
  Transaction ts = null;
  Object result = null;
  try {
   session = HibernateSessionFactory.getSession();
   ts = session.beginTransaction();
  
   if (hibernateCallback!=null)
    result = hibernateCallback.doInHibernate(session);
  
   ts.commit();
  } catch(Exception e){
   ts.rollback();
   throw new RuntimeException(e.getMessage());
  } finally {
   if (session!=null) session.close();
  }
 
  return result;
}

}

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