0

用户只有一种方法可以使用,他必须能够使用前端的一种方法保存任何类型的集合:

save(Collection<foo> bar) 

我正在使用带有注释的最新 Hibernate。

我该如何为此实现后端?基本上我需要它来理解 Collection 里面有什么对象。

问题是,我不想为我的数据库中的每个表创建一个保存方法,想要通用。或者如果这不可能,其他一些想法,使用什么逻辑?

4

1 回答 1

0

您可以实现以这种方式保存集合的通用方法。

创建抽象的通用 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 的非常好的文章。

于 2012-08-11T19:17:51.433 回答