gpt4 book ai didi

java - 为 Hibernate 创建通用 DAO 类

转载 作者:行者123 更新时间:2023-11-30 03:51:12 26 4
gpt4 key购买 nike

在我的 Web 应用程序中,有相当多的实体,其中大多数都需要 CRUD 操作。所以我正在考虑编写一个通用的 DAO 来处理所有实体的 CRUD。我找到了 IBM 的一篇教程文章,但不太理解使用泛型类型“T”和“PK”的泛型实现。文章为at this link

我在所有方法中使用对象类型编写了以下 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,但现在不会了。

关于java - 为 Hibernate 创建通用 DAO 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24414132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com