0
用户休眠后台只有一个使用这种方法,他必须能够用一个方法从前端保存任何类型的集合:创建为通用节省方法
save(Collection<foo> bar)
我使用的是最新的Hibernate与注释。
如何为此执行后端?基本上我需要它来理解,Collection中有什么对象。
问题是,我不想为我的数据库中的每个表创建一个保存方法,想做通用的。或者如果这是不可能的,一些其他的想法,使用什么逻辑?
用户休眠后台只有一个使用这种方法,他必须能够用一个方法从前端保存任何类型的集合:创建为通用节省方法
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
有必要实施发现者,那么可以跳过这个如果你不这样做需要他们。在这种情况下,您只能编写一个泛型类(不是每个实体的抽象类和子类)。
Here是关于使用Hibernate和JPA创建泛型DAO的非常好的文章。