Chapter 2. Repositories: Convenient Data Access Layers
Implementing the data access layer of an application has been cumbersome for quite a while. Too much boilerplate code had to be written. Domain classes were anemic and not designed in a real object-oriented or domain-driven manner. The goal of the repository abstraction of Spring Data is to reduce the effort required to implement data access layers for various persistence stores significantly. The following sections will introduce the core concepts and interfaces of Spring Data repositories. We will use the Spring Data JPA module as an example and discuss the basic concepts of the repository abstraction. For other stores, make sure you adapt the examples accordingly.
Quick Start
Let’s take the
Customer
domain class from our domain that will be persisted to an arbitrary
store. The class might look something like Example 2-1.
Example 2-1. The Customer domain class
public
class
Customer
{
private
Long
id
;
private
String
firstname
;
private
String
lastname
;
private
EmailAddress
emailAddress
;
private
Address
address
;
…
}
A traditional approach to a data access layer would now require you to at least implement a repository class that contains necessary CRUD (Create, Read, Update, and Delete) methods as well as query methods to access subsets of the entities stored by applying restrictions on them. The Spring Data repository approach allows you to get rid of most of the implementation code and instead start with a plain interface definition ...
Get Spring Data now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.