首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate DAO的具体兑现

2012-10-20 
Hibernate DAO的具体实现定义BaseDAO: (增/删/改/查单个/查集合/查集合2)?public interface BaseDAO{Tvo

Hibernate DAO的具体实现

定义BaseDAO: (增/删/改/查单个/查集合/查集合2)

?

public interface BaseDAO{<T>void add(T object);<T>void delete(Class clazz,Serializable id);<T>void update(T clazz);<T> T get(Class<T> clazz,Serializable id);<T>List<T>search(Class<T> clazz);<T>List<T> search(Class<T> clazz,Object condition);}

?

?然后再impl包中实现该接口:

?

public class BaseDAOSupport implements BaseDAO {private Session session;protected Session getSession() {return HibernateSessionFactory.getSession();}public void setSession(Session session) {this.session = session;}/** * 增加 */public <T> void add(T object) {Transaction ts = null;try {ts = getSession().beginTransaction();getSession().save(object);ts.commit();} catch (HibernateException e) {if(null != ts){ts.rollback();}e.printStackTrace();}finally{HibernateSessionFactory.closeSession();}}/** * 删除 */public <T> void delete(Class clazz,Serializable id) {Transaction ts = null;try {ts = getSession().beginTransaction();getSession().delete(get(clazz, id));ts.commit();} catch (HibernateException e) {if(null != ts){ts.rollback();}e.printStackTrace();}finally{HibernateSessionFactory.closeSession();}}/** * 更新 */public <T> void update(T clazz) {Transaction ts = null;try {ts = getSession().beginTransaction();getSession().update(clazz);ts.commit();} catch (HibernateException e) {if(null != ts){ts.rollback();}e.printStackTrace();}finally{HibernateSessionFactory.closeSession();}}/** * 查询单个 */public <T> T get(Class<T> clazz, Serializable id) {return (T) getSession().get(clazz, id);}/** * 无条件查询集合 */public <T> List<T> search(Class<T> clazz) {List<T> list = getSession().createCriteria(clazz).list();return list ;}/** * 有条件查询集合 */public <T> List<T> search(Class<T> clazz, Object condition) {List<T> list = getSession().createCriteria(clazz).add(Example.create(condition)).list();return list;}}

?

?

if(null != ts){ ts.rollback(); }

HibernateSessionFactory.closeSession();


可以考虑写成方法,听说过“发现有两处重复,就应该提取公共”的说法吗?

热点排行