Add repositories.adoc documenting the auto-configuration of Spring Data for Apache Geode/Pivotal GemFire Repositories.
This commit is contained in:
@@ -107,3 +107,4 @@ Finally, we arrive at Spring Boot for Apache Geode & Pivotal GemFire.
|
||||
|
||||
include::clientcache-applications.adoc[]
|
||||
include::caching.adoc[]
|
||||
include::repositories.adoc[]
|
||||
|
||||
88
spring-geode-docs/src/docs/asciidoc/repositories.adoc
Normal file
88
spring-geode-docs/src/docs/asciidoc/repositories.adoc
Normal file
@@ -0,0 +1,88 @@
|
||||
[[geode-repositories]]
|
||||
== Spring Data for Apache Geode & Pivotal GemFire Repositories
|
||||
|
||||
Using Spring Data Repositories with Apache Geode or Pivotal GemFire makes short work of data access operations
|
||||
when using either Apache Geode or Pivotal GemFire as your System of Record (SOR), persisting your application's
|
||||
state.
|
||||
|
||||
{spring-data-commons-docs-html}/#repositories[Spring Data Repositories] provides a convenient and highly powerful way
|
||||
to define basic CRUD and simply query data access operations simply by specifying the contract of those data access
|
||||
operations with a Java interface.
|
||||
|
||||
Spring Boot for Apache Geode & Pivotal GemFire _auto-configures_ the Spring Data for Apache Geode/Pivotal GemFire
|
||||
{spring-data-geode-docs-html}/#gemfire-repositories[Repository infrastructure and extension] when either is
|
||||
declared on your application's classpath. You do not need to do anything special to enable it. Simply start coding
|
||||
your application-specific Repository interface extensions and the way you go.
|
||||
|
||||
For example:
|
||||
|
||||
Define the `Customer` application domain object modeling customers and map it to the GemFire/Geode "Customers" Region
|
||||
using SDG's {spring-data-geode-javadoc}/org/springframework/data/gemfire/mapping/annotation/Region.html[`@Region`]
|
||||
mapping annotation:
|
||||
|
||||
.Customer application domain object
|
||||
[source,java]
|
||||
----
|
||||
package example.app.model;
|
||||
|
||||
import ...;
|
||||
@Region("Customers")
|
||||
class Customer {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
....
|
||||
}
|
||||
----
|
||||
|
||||
Declare your _Repository_ (Data Access Object (DAO)) for `Customers`...
|
||||
|
||||
.CustomerRepository for peristing and accessing `Customers`
|
||||
[source,java]
|
||||
----
|
||||
package example.app.repo;
|
||||
|
||||
import ...;
|
||||
|
||||
interface CustomerRepository extends CrudRepository<Customer, Long> {
|
||||
|
||||
List<Customer> findByLastNameLikeOrderByLastNameDescFirstNameAsc(String customerLastNameWildcard);
|
||||
|
||||
}
|
||||
----
|
||||
|
||||
Then use the `CustomerRepository` in an application service class:
|
||||
|
||||
.Inject and use the `CustomerRepository`
|
||||
[source,java]
|
||||
----
|
||||
package example.app;
|
||||
|
||||
import ...;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableEntityDefinedRegions(basePackageClasses = Customer.class)
|
||||
class SpringBootApacheGeodeClientCacheApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SpringBootApacheGeodeClientCacheApplication.class, args);
|
||||
}
|
||||
|
||||
@Bean
|
||||
ApplicationRunner runner(CustomerRepository customerRepository) {
|
||||
|
||||
// Matches Williams, Wilson, etc.
|
||||
List<Customer> customers =
|
||||
customerRepository.findByLastNameLikeOrderByLastNameDescFirstNameAsc("Wil%");
|
||||
|
||||
// process the list of matching customers...
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
Again, see Spring Data Commons' {spring-data-commons-docs-html}/#repositories[Repositories abstraction] in general,
|
||||
and Spring Data for Apache Geode/Pivotal GemFire {spring-data-geode-docs-html}/#gemfire-repositories[Repositories extension]
|
||||
in particular, for more details.
|
||||
Reference in New Issue
Block a user