为所有实体编写通用的Spring jpa存储库

时间:2018-12-09 09:34:38

标签: spring spring-data-jpa

我正在开发Spring Boot应用程序。

我们有服务层,Rest Controller和Dao作为存储库。

我的数据库中有20到30个表,我不想为每个实体创建存储库并将其扩展到CrudRepository。

ex:用户是一个实体,要对用户执行持久性操作,我必须创建扩展CrudRepository的UserRepository。

与部门,公司等相同...

我想做的是,我将编写一个BaseRepository来扩展CrudRepository,基本存储库应接受所有实体并执行持久性操作。

有办法吗?

1 个答案:

答案 0 :(得分:1)

不要扩展CrudRepository,它的功能都与泛型类型相关联,因此将其扩展为泛型实现很容易。您可能只想简单地直接使用JPA实体管理器:

import javax.persistence.EntityManager;

import org.springframework.beans.factory.annotation.Autowired;

public class GenericRepository {

    @Autowired
    private EntityManager entityManager;

    public <T, ID> T findById(Class<T> type, ID id) {
        return entityManager.find(type, id);
    }
}