image:https://spring.io/badges/spring-data-geode/ga.svg[Spring Data Geode,link=https://projects.spring.io/spring-data-geode#quick-start] image:https://spring.io/badges/spring-data-geode/snapshot.svg[Spring Data Geode,link=https://projects.spring.io/spring-data-geode#quick-start]
= Spring Data for Apache Geode image:https://jenkins.spring.io/buildStatus/icon?job=spring-data-geode%2Fmain&subject=Build[link=https://jenkins.spring.io/view/SpringData/job/spring-data-geode/] https://gitter.im/spring-projects/spring-data[image:https://badges.gitter.im/spring-projects/spring-data.svg[Gitter]]
Spring Data for Apache Geode brings the full power of the Spring Framework to your Apache Geode applications.
[[notice]] == NOTICE
[[notice-2023-january]] 2023-January-17:
At the end of 2022, VMware https://tanzu.vmware.com/content/blog/spring-for-vmware-gemfire-is-now-available[announced] the general availability of the Spring for VMware GemFire portfolio of projects.
While these Spring based projects for VMware GemFire are open source and a succession to the Spring for Apache Geode projects, they are not a replacement. VMware GemFire forked from the Apache Geode project and is not open source. Additionally, newer Apache Geode and VMware GemFire clients are not backwards compatible with older Apache Geode and VMware GemFire servers. You can begin the transition by starting https://docs.vmware.com/en/Spring-Data-for-VMware-GemFire/index.html[here].
Alternatively, the Spring portfolio provides first-class https://docs.spring.io/spring-boot/docs/current/reference/html/io.html#io.caching.provider[integration] with other comparable caching providers. Also, see https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html#cache-store-configuration[here] and https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html#cache-plug[here].
Finally, keep in mind, the Spring for Apache Geode projects will still be maintained until OSS and commercial support ends. Maintenance will only include CVE and critical fixes. No new features or major enhancements will be made. The Spring Data for Apache Geode support timelines can be viewed https://spring.io/projects/spring-data-geode#support[here].
[[notice-2022-october]] 2022-October-24:
As of Spring Data 2022.0.0-RC1
(Turing-RC1) / 3.0.0-RC1
, the Spring Data for Apache Geode (SDG) module
has been removed from the Spring Data BOM and Spring Data release train. SDG will no longer continue in
the 3.0
generation from this point forward.
In summary, VMware (VMW) made a https://markmail.org/message/oafksl5iufmqhuyg[decision] to discontinue all contributions to the Apache Geode project at the Apache Software Foundation (ASF). VMware has committed to the Apache Geode project until the end of October 2022. However, the plan is to transition the Apache Geode project responsibilities to another entity or group of individuals who are members of the PMC and are willing to maintain and manage the project going forward.
Unfortunately, as of 2022-October-24, the Apache Geode project failed to secure at least 3 voting members on the PMC required to maintain and manage the project. So, a https://markmail.org/message/dfdkfmxcawcl4q7r[VOTE] was cast to move the Apache Geode project to the Attic at the Apache Software Foundation. Clearly, this puts the Spring Data for Apache Geode (SDG) project at odds with the Apache Geode project, especially with respect to https://spring.io/projects/spring-data-geode#support[support timelines].
Spring Data for Apache Geode (SDG) 2.7.x
is already GA and based on Apache Geode 1.14.x
. Across the Spring
portfolio there was no plan for a Spring Data 2.8
and a subsequent Spring Boot 2.8
to pick up Spring Data 2.8
.
SDG 2.8
would have been the earliest opportunity to build support for Apache Geode 1.15
(See https://geode.apache.org/releases/[releases]).
Since Spring Data / Spring Boot 2.7
are the last minor releases in our 2.x
release series, SDG 3.0
was then
immediately targeted for Apache Geode 1.15
. Although, given VMW's decision, we decided to cancel SDG 3.0
because
it would extend our support timelines significantly past the October 2022 date committed to by VMW. As a result, support
for Apache Geode 1.15
was going to move into an extended SDG 2.8
release and proceed with a series of milestones
and release candidates leading up to a final 2.8.0
GA in a relatively compressed timeframe.
Now that this https://markmail.org/message/dfdkfmxcawcl4q7r[VOTE] has been cast, we have changed our decision
and the Spring team will no longer proceed with SDG 2.8
. In addition, although we will honor our SDG project
commitments and https://spring.io/projects/spring-data-geode#support[support timelines], where SDG 2.7.x
OSS EOL
ends on 2023-May-05 and commercial EOL ends on 2024-Sept-01, the SDG project will now go into minimal maintenance
mode where only CVEs and critical bugs will be addressed. No new features or enhancements to the SDG project will occur.
Finally, VMW has intentions of resurrecting the Spring Data for VMware GemFire (SDG) https://spring.io/projects/spring-data-gemfire[project], which will become the eventual successor of the Spring Data for Apache Geode project. However, Spring Data for VMware GemFire will be managed as an external, community-led project. Spring Data for VMware GemFire will not be included in the Spring Data BOM, will not be released as part of the Spring Data release train and will not be maintained by the Spring (Data) team any longer.
Specifics of the Spring Data for VMware GemFire project and timeframe are beyond the scope this notice, but more details will be provided in a blog post in the near future.
[[features]] == Features
[[code-of-conduct]] == Code of Conduct
This project is governed by the https://github.com/spring-projects/.github/blob/e3cc2ff230d8f1dca06535aa6b5a4a23815861d4/CODE_OF_CONDUCT.md[Spring Code of Conduct]. By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to spring-code-of-conduct@pivotal.io.
[[getting-started]] == Getting Started
Here is a quick teaser of a Spring application using Spring Data Repositories in Java:
package com.example.app.model;
@Region("People") public class Customer {
private String firstName;
private Strign lastName;
// Getters and Setter omitted
}
package com.example.app.repo;
public interface CustomerRepository extends CrudRepository<Customer, Long> {
List
List
package com.example.app.service;
@Service public class CustomereService {
private final CustomerRepository repository;
public MyService(CustomereService repository) { this.repository = repository; }
public void doWork() {
repository.deleteAll();
Customer customer = new Customer();
customer.setFirstname("John");
customer.setLastname("Blum");
repository.save(customer);
List<Customer> lastNameResults = repository.findByLastnameLike("B%");
List<Customer> firstNameResults = repository.findByFirstname("John");
Configure an Apache Geode cache and Region (REPLICATE, PARTITION and so on):
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:gfe="http://www.springframework.org/schema/gemfire" xmlns:gfe-data="http://www.springframework.org/schema/data/gemfire" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=" http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/geode https://www.springframework.org/schema/geode/spring-geode.xsd http://www.springframework.org/schema/data/gemfire https://www.springframework.org/schema/data/geode/spring-data-gemfire.xsd">