[英]creating a generic DAO class for Hibernate
在我的Web應用程序中,有很多實體,其中大多數需要CRUD操作。 因此,我正在考慮編寫一個可以處理所有實體CRUD的通用DAO。 我從IBM找到了一篇教程文章,但是對使用通用類型“ T”和“ PK”的通用實現不太了解。 該文章位於此鏈接
我通過在所有方法中使用對象類型編寫了以下DAO,它們似乎工作得很好-我的所有實體都可以使用以下CommonDao類進行CRUD。 盡管它可以滿足我的需求,但我正在尋找為Hibernate實現通用DAO類的最佳實踐。
public class CommonDao
{
private final static SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
public CommonDao() {}
@UnitOfWork
public List findAll(Object className)
{
List types = null;
Session session = sessionFactory.openSession();
Criteria criteria = session.createCriteria(className + ".class");
types = (List <Object>) criteria.list();
session.close();
return types;
}
@Transactional
public void saveObject(Object obj)
{
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.saveOrUpdate(obj);
tx.commit();
session.close();
}
@Transactional
public void saveObjectWithManyEntities(Object obj, Set<Object> objects) /* for OneToMany relationships */
{
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.saveOrUpdate(obj);
for (Object o : objects)
{
session.save(o);
}
tx.commit();
session.close();
}
}
最好的方法是將Spring Data包含到您的項目中。 JPA存儲庫提供基本的CRUD,分頁,排序,並且您的大多數查詢都可以根據方法命名約定自動構建。
在Spring Data之前,我們將訴諸於通用的Daos,但現在不再使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.