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) to persist your application’s state.
Spring Data Repositories provides a convenient and highly powerful way to define basic CRUD and simple query data access operations easily just by specifying the contract of those data access operations in a Java interface.
Spring Boot for Apache Geode & Pivotal GemFire auto-configures the Spring Data for Apache Geode/Pivotal GemFire Repository 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 interfaces and the way you go.
For example:
Define a Customer
class to model customers and map it to the GemFire/Geode "Customers" Region using the SDG
@Region
mapping
annotation:
Customer
entity class.
package example.app.books.model; import ...; @Region("Customers") class Customer { @Id private Long id; private String name; .... }
Declare your Repository (a.k.a. Data Access Object (DAO)) for Customers
…
CustomerRepository
for peristing and accessing Customers
.
package example.app.books.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
.
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' Repositories abstraction in general, and Spring Data for Apache Geode/Pivotal GemFire Repositories extension in particular, for more details.