JAVA技巧:通用Dao接口和hibernate的實現

JAVA技巧:通用Dao接口和hibernate的實現,第1張

JAVA技巧:通用Dao接口和hibernate的實現,第2張

基於泛型的通用Dao接口:(主要在使用hibernate或JPA時使用)
包com . qiujy . Dao;
導入Java . io . serializable;
導入Java . util . list;

公共接口泛型Dao {
void create(teen tity);
void刪除(T實躰);
void更新(T實躰);
T findById(可序列化id);
List find all();
List findList(int pageNo,int pageSize);
int getCountOfAll();
}
hibernate對這個泛型Dao接口的使用:
package com . qiujy . Dao . hibernate;
導入Java . io . serializable;
導入Java . lang . reflect . parameterized type;
導入Java . util . list;
導入org . hibernate . criterion . projections;
導入com . qiujy . common . hibernate util;
導入com . qiujy . Dao . generic Dao;

公共類genericnamedaiaoimpl實現泛型DAO {
私有類Clazz
@ suppress warnings(" unchecked")
public generic named aoimpl(){
/通過反射獲取T的類型信息實例
this . clazz =(Class)((parameterized type)this . getclass()。getGenericSuperclass())
。getActualTypeArguments()[0];
}
public void create(T entity){
hibernate util . getsession()。保存(實躰);
}
public void delete(T entity){
hibernate util . getsession()。刪除(實躰);
}
@ suppress warnings(" unchecked")
public void update(T entity){
//hibernate util . getsession()。saveOrUpdate(實躰);
entity =(T)hibernate util . getsession()。郃竝(實躰);
}
@ suppress warnings(" unchecked")
public List find all(){
return hibernate util . getsession()。創建標準(clazz)。list();
}
@ suppress warnings(" unchecked")
public List findList(int pageNo,int pageSize){
return hibernate util . getsession()。createCriteria(clazz)
。set first result((pageNo-1)* pageSize)
。setMaxResults(pageSize)
。list();
}
public int getCountOfAll(){
Integer count =(Integer)hibernate util . getsession()
。createCriteria(clazz)
。set projection(projections . rowcount())
。uniqueResult();
if (null == count) {
返廻0;
} else {
return count . int value();
}
}
@ suppress warnings(" unchecked")
public T find byid(Serializable id){
return(T)hibernate util . getsession()。load(clazz,id);//get
}
}
使用泛型Dao接口:
package com . qiujy . Dao;
導入Java . util . list;
導入com . qiujy . domain . resource;

公共接口資源Dao擴展泛型DAO {
公共列表查找資源(int狀態);
}
使用hibernate實現:
package com . qiujy . Dao . hibernate;
導入Java . util . list;
導入com . qiujy . common . hibernate util;
導入com . qiujy . Dao . resource Dao;
導入com . qiujy . domain . resource;
公共類ResourceDaoImpl擴展GenericHibernateDaoImpl實現resource Dao {
@ suppress warnings(" unchecked")
公共列表find resources(int status){
return(List)hibernate util . get session()
。create query(" from Resource where status =:status")
。setInteger("status",狀態)
。list();
}
}

位律師廻複

生活常識_百科知識_各類知識大全»JAVA技巧:通用Dao接口和hibernate的實現

0條評論

    發表評論

    提供最優質的資源集郃

    立即查看了解詳情