Added initial draft of developer guide.

master
Oliver Gierke 14 years ago
parent
commit
cac2533292
  1. 55
      Developer-guide.md

55
Developer-guide.md

@ -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…
Cancel
Save