在这个简短的教程中,我们将讨论如何创建一个只读的Spring Data Repository。
有时有必要从数据库中读取数据而无需修改它(CQRS)。在这种情况下,拥有只读的Repository接口将是完美的。它将提供读取数据的功能,而无需任何人更改它的风险。
让我们从一个包含spring-boot-starter-data-jpa依赖项的Spring Boot项目开始:
<dependency> |
Spring Data受欢迎的CrudRepository接口包含在此依赖项中,该接口提供了大多数应用程序所需的所有基本CRUD操作(创建,读取,更新,删除)的方法。但是,它包含几种修改数据的方法,我们需要一个只能读取数据的存储库。
CrudRepository实际上扩展了另一个称为Repository的接口。我们还可以扩展此接口以满足我们的需求。
让我们创建一个扩展Repository的新接口:
@NoRepositoryBean |
在这里,我们仅定义了两个只读方法。此存储库访问的实体将不受任何修改的影响。
还必须注意,我们必须使用@NoRepositoryBean批注来告诉Spring我们希望该存储库保持通用性,这一点也很重要。这使我们可以根据需要将只读存储库重用于许多不同的实体。
接下来,我们将看到如何将实体绑定到我们的新ReadOnlyRepository。
假设我们有一个简单的Book实体,我们想访问它:
@Entity |
现在我们有了一个可持久的实体,我们可以创建一个继承自ReadOnlyRepository的存储库接口:
public interface BookReadOnlyRepository extends ReadOnlyRepository<Book, Long> { |
我们学习了如何扩展Spring Data的Repository接口,以创建可重用的只读存储库。之后,我们将其绑定到一个简单的Book实体,并编写了一个测试,证明了其功能符合我们的预期。
与往常一样,可以在GitHub上找到此代码的有效示例。