泛型DAO

泛型DAO:把所有相同的操作写在一起

JDK1.5或者JDK5上加的泛型DAO

如下例子:

GenericDao.java

 

public interface GenericDao<T,PK extends Serializable> {
    public T findById(PK id);
    public List<T> findAll();
    public T save(T entity);
    public void update(T entity);
    public void delete(T entity);
}

 

GenericDaoHibernate.java

 

import java.lang.reflect.ParameterizedType;
public class GenericDaoHibernate<T, PK extends Serializable> implements
  GenericDao<T, PK> {

 private Class<T> clazz;

 public GenericDaoHibernate() {
  clazz = (Class<T>) ((ParameterizedType) getClass()
    .getGenericSuperclass()).getActualTypeArguments()[0];  //取得CLAZZ的类型
 }

 public void delete(T entity) {
  Session session = HibernateSessionFactory.getSessionFactory()
    .getCurrentSession();
  session.delete(entity);

 }

 public List<T> findAll() {
  Session session = HibernateSessionFactory.getSessionFactory()
    .getCurrentSession();
  Query query = session.createQuery("from " + clazz.getName());

  return query.list();
 }

 public T findById(PK id) {
  Session session = HibernateSessionFactory.getSessionFactory()
    .getCurrentSession();

  return (T) session.get(clazz, id);
 }

 public T save(T entity) {
  Session session = HibernateSessionFactory.getSessionFactory()
    .getCurrentSession();
  session.save(entity);
  return entity;
 }

 public void update(T entity) {

  Session session = HibernateSessionFactory.getSessionFactory()
    .getCurrentSession();
  session.update(entity);

 }

}

 

GuestBookDao .java

 

public interface GuestBookDao extends GenericDao<GuestBook, Integer> {
 public List<GuestBook> findAllOrderByid();
}

 

GuestbookDaoHibernate .java

public class GuestbookDaoHibernate extends
  GenericDaoHibernate<GuestBook, Integer> implements GuestBookDao {

 public List<GuestBook> findAllOrderByid() {
  Session session = HibernateSessionFactory.getSessionFactory()
    .getCurrentSession();
  Query query = session.createQuery("from Guestbook order by id desc");
  return query.list();
 }

}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值