package com.addressdemo.hibernate.dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import com.addressdemo.HibernateSessionFactory;
public class BaseDAO {
/** *//**
* 添加實體
* @param obj,要添加的實體對象
* @throws Exception
*/
public void add(Object obj) throws Exception{
Session session = null;
try {
session = HibernateSessionFactory.getSession();
session.save(obj);
session.beginTransaction().commit();
if(session!=null){
session.close();
}
} catch (RuntimeException e) {
session.beginTransaction().rollback();
if(session!=null){
session.close();
}
throw e;
}
}
/** *//**
* 刪除實體
* @param obj,要刪除的實體
* @throws Exception
*/
public void delete(Object obj) throws Exception{
Session session = null;
try {
//取得session對象
session =HibernateSessionFactory.getSession();
//刪除實體
session.delete(obj);
//提交事務
session.beginTransaction().commit();
if(session!=null){
session.close();
}
} catch (Exception e) {
session.beginTransaction().rollback();//事務回滾
if(session!=null){
session.close();
}
throw e;
}
}
/** *//**
* 更新實體
* @param obj,要更新的實體
* @throws Exception
*/
public void update(Object obj) throws Exception{
Session session=null;
try {
//取得session對象
session=HibernateSessionFactory.getSession();
//刪除實體
session.update(obj);
//提交事務
session.beginTransaction().commit();
if(session!=null){
session.close();
}
} catch (Exception e) {
session.beginTransaction().rollback();//事務回滾
if(session!=null){
session.close();
}
throw e;
}
}
/** *//**
* 根據指定的hql進行查詢,并返回查詢結果
* @param hql,hql語句
* @return 查詢結果
* @throws Exception
*/
public List<?> findByHQL(String hql) throws Exception{
try {
Query queryObject =HibernateSessionFactory.getSession().createQuery(hql);
return queryObject.list();
} catch (Exception e) {
throw e;
}
}
/** *//**
* 根據指定的實體類型和主鍵的值,查找實體對象
* @param cls,實體的類
* @param key,主鍵的值
* @return,查找的實體對象
* @throws Exception
*/
public Object findById(String cls,Serializable key)
throws Exception
{
try {
Object instance = (Object) HibernateSessionFactory.getSession().get(cls, key);
return instance;
} catch (Exception e) {
throw e;
}
}
}