Spring JPA 中的通用存储库

Sud*_*osh 1 spring repository-pattern spring-data-jpa spring-rest

我们正在开发一个包含大量数据库表的 Restful 项目。虽然对表的操作几乎相同,主要是INSERT/UPDATE/DELETE/FETCH。

我的问题是:
我们是否必须为我们创建的每个实体(域类)创建一个存储库(扩展 JpaRepository),或者可以选择创建一个可以处理所有实体的上述所有功能的 GenericRepository ?即所有的单个 GenericRepository。

如果是这样,你能分享一个例子吗?

Jen*_*der 5

[有] 创建一个GenericRepository可以处理所有实体的所有上述功能的选项吗?

您正在以错误的假设看待此问题:您真的不应该为每个表/实体而是每个聚合(根)拥有一个存储库。请参阅您是否应该在 JPA 中为每个表设置一个存储库?更多细节。

第二:拥有一个通用存储库有点违背 Spring Data JPA 的目的,毕竟 JPA 已经有了一个通用存储库。它被称为EntityManager。因此,如果您只需要您提到的操作,只需注入 an 就EntityManager可以了。根本不需要使用 Spring Data JPA。如果你想在你的业务代码和 JPA 细节之间有一些东西,你可以将它包装在一个简单的存储库中,如@AlexSalauyou 所述

最后一点:您将拥有在某处创建所有表的代码。您还将拥有所有实体的代码。你有测试这个的代码。为每个接口定义一个简单的接口会不会有问题?