用户只有一种方法可以使用,他必须能够使用前端的一种方法保存任何类型的集合:
save(Collection<foo> bar)
我正在使用带有注释的最新 Hibernate。
我该如何为此实现后端?基本上我需要它来理解 Collection 里面有什么对象。
问题是,我不想为我的数据库中的每个表创建一个保存方法,想要通用。或者如果这不可能,其他一些想法,使用什么逻辑?
您可以实现以这种方式保存集合的通用方法。
创建抽象的通用 DAO 类:
public abstract class AbstractHibernateDAO<T> {
private final Class<T> clazz;
@Autowired
private SessionFactory sessionFactory;
public AbstractHibernateDAO(Class<T> clazz) {
this.clazz = clazz;
}
public void saveCollection(Collection<T> entities) {
for (T t: entities) {
sessionFactory.getCurrentSession().save(t);
}
}
// Other CRUD methods.
}
某些实体的 DAO 的具体实现:
@Repository
@Transactional
public class TestEntityHibernateDAO extends AbstractHibernateDAO<TestEntity> {
public TestEntityHibernateDAO() {
super(TestEntity.class);
}
}
Class<T> clazz
是实现查找器所必需的,因此如果您不需要它们,您可以跳过它。在这种情况下,您只能编写一个通用类(不是每个实体的抽象类和子类)。
这是关于使用 Hibernate 和 JPA 创建通用 DAO 的非常好的文章。