关于hibernate操作数据库的DAO类
关于hibernate操作数据库的DAO类,抽象出了一个 BaseHibernateImpl类,他继承自自定义接口:BaseHibernateI。
BaseHibernateImpl我一直觉得不是很完善,大家有没有更好的DAO类?拿出来分享一下...等待高手的类...
下面是BaseHibernateI接口和BaseHibernateImpl类:
...
public interface BaseHibernateI {
public Object get(Class clz,java.io.Serializable id);
public void add(Object o);
public void delete(Class clz,java.io.Serializable id);
public List search(Class clz,Object o);
public void update(Object o);
}
------------------------------------------
....
public abstract class BaseHibernateImpl implements BaseHibernateI {
private Session session = null;
public void add(Object o) {
// TODO 自动生成方法存根
Transaction tx = null;
session = getSession();
try {
tx = session.beginTransaction();
session.save(o);
tx.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
throw e;
} finally {
this.CloseSession();
}
}
public void delete(Class clz, Serializable id) {
// TODO 自动生成方法存根
Transaction tx = null;
session = this.getSession();
try {
tx = session.beginTransaction();
session.delete(this.get(clz, id));
tx.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage()+".............."+e);
throw e;
} finally {
this.CloseSession();
}
}
public Object get(Class clz, Serializable id) {
// TODO 自动生成方法存根
Object ret = null;
session = getSession();
try {
ret = session.get(clz, id);
} catch (HibernateException e) {
// TODO Auto-generated catch block
throw e;
} finally {
this.CloseSession();
}
return ret;
}
public List search(Class clz, Object o) {
// TODO 自动生成方法存根
session = getSession();
List result;
try {
result = session.createCriteria(clz).add(Example.create(o)).list();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
throw e;
}
return result;
}
public void update(Object o) {
// TODO 自动生成方法存根
Transaction tx = null;
session = this.getSession();
try {
tx = session.beginTransaction();
session.update(o);
tx.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
throw e;
} finally {
this.CloseSession();
}
}
public Session getSession() {
this.session = HibernateSessionFactory.getSession();
return this.session;
}
public void setSession(Session session) {
this.session = session;
}
public void CloseSession() {
this.session.close();
}
}
大家各显奇能吧!