泛型DAO的設計模式


(一)首先定義DAO接口IGenericDAO,該接口定義了共同的CRUD操作:

public interface IGenericDAO<T,PK extends Serializable>{

              public T findById(PK id) ;

              public List<T> findAll() ;

              public T save(T entity) ;

              public void delete(T entity) ;

             public void update(T entity) ;

}

(二)針對IGenericDAO接口的Hibernate實現,完成通用的CRUD操作

public class GenericDaoHibernate<T,PK extends Serializable> implements IGenericDAO<T,PK>{

              private Class<T> clazz ;

              private Session session ;

              public GenericDaoHibernate(){}

              public T findById(PK id) {

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

            }

              public List<T> findAll() {

                       Query query = session.createQuery("from "+clazz.getName()) ;

                       return query.list() ;

            }

              public T save(T entity) {

                        return (T)session.save(entity) ;

 

            }

              public void delete(T entity) {

                      session.delete(entity) ;

           }

              public void update(T entity) {

                       session.update(entity) ;

          }

}

 

(三)舉例定義一個IUserDAO接口,該接口繼承IGenericDAO

public interface IUserDAO  extends IGenericDAO〈User,Integer〉{

       public User findByName(String username);

}

(四)針對IUserDAO 的Hibernate實現UserDAOHibernate

public class UserDAOHibernate extends GenericDaoHibernate<User,Integer> implements IUserDAO{

..............

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章