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