1 changed files with 55 additions and 0 deletions
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
## Introduction |
||||
|
||||
### Mapping and conversion system |
||||
|
||||
The Spring Data Commons module provides a sophisticated system to gather and use entity mapping and conversion functionality. The core model abstractions are `PersistentEntity`, `PersistentProperty`. These abstractions can be created and used through a `MappingContext`. In top of that we provide an `EntityConverter` abstraction consisting of `EntityReader` and `EntityWriter`. |
||||
|
||||
#### Core mapping abstractions |
||||
|
||||
TODO |
||||
|
||||
#### Entity instantiation |
||||
|
||||
As an important part of the entity conversion on the reading side is creating instances of the domain class an `EntityInstantiator` API allows plugging custom code for |
||||
|
||||
### Repository abstraction |
||||
|
||||
#### Repository interfaces |
||||
|
||||
We provide a set of repository interfaces that either declare a user's repository interface as a Spring Data interface or even pull in functionality that can be implemented generically. |
||||
|
||||
* `Repository` - A plain marker interface to let the Spring Data infrastructure pick up user defined repositories. |
||||
* `CrudRepository` - Extends `Repository` and adds basic persistence methods like saving entities, finding entities and deleting them. |
||||
* `PagingAndSortingRepositories` - Extends `CrudRepository` and adds method for access ing entities page by page and sorted by a given criteria. |
||||
|
||||
### Web integration |
||||
|
||||
TODO |
||||
|
||||
## Building a store implementation |
||||
|
||||
When building a store implementation for a data store we do not already support the most interesting parts are the mapping and conversion system as well as the repository abstraction. If the store you target already supports entity mapping (like JPA for example) you can implement the repository abstraction directly on top of it. Otherwise you need to integrate with the mapping and conversion system. The following sections will describe the important abstractions and classes you'll have to take a look and and extend/implement. |
||||
|
||||
As example for an implementation of store support with Spring Data mapping have a look at Spring Data MongoDB, for a plain repository abstraction integration consider taking a look at Spring Data JPA. |
||||
|
||||
### Mapping and conversion system |
||||
|
||||
TODO |
||||
|
||||
### Repository abstraction |
||||
|
||||
#### Basic support |
||||
|
||||
The very core of the repository abstraction is the factory to create repository instances. `RepositoryFactorySupport` requires the following methods to be implemented: |
||||
|
||||
* `getEntityInformation(…)` - return the `EntityInformation` which encapsulates ways to determine whether an entity is new, lookup the identifier of the entity as well as the type of the id. `AbstractEntityInformation` is the class you'll probably want to extend. |
||||
* `getRepositoryBaseClass(…)` - returns the type of the backing instance of the repositories which usually implements CRUD methods etc. Needed to inspect the user's repository interface for query methods before actually creating the instance. |
||||
* `getTargetRepository(…)` - returns an instance of the type returned by `getRepositoryBaseClass(…)`. This instance will usually return one of the Spring Data Repository interfaces. |
||||
|
||||
#### Query methods |
||||
|
||||
TODO |
||||
|
||||
#### Spring namespaces |
||||
|
||||
TODO |
||||
Loading…
Reference in new issue