簡體   English   中英

為Hibernate創建一個通用的DAO類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM