239 lines
14 KiB
Plaintext
239 lines
14 KiB
Plaintext
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
|
||
|
||
* XML namespace to https://docs.spring.io/spring-data-geode/docs/current/reference/html/#bootstrap[configure and create Apache Geode resources declaratively with Spring]
|
||
* Annotation model to https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap-annotation-config[quickly and easily get started with Apache Geode out-of-the-box]
|
||
* Simplifies https://docs.spring.io/spring-data/geode/docs/current/reference/html/#apis[working with Apache Geode APIs]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#apis:spring-cache-abstraction[Spring Cache Abstraction backed by Apache Geode]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#mapping[Spring Data Mapping infrastructure applied to POJOs stored in Apache Geode]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#gemfire-repositories[Spring Data Repositories backed by Apache Geode]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#apis:transaction-management[Apache Geode Cache Transactions through Spring's Declarative Transaction Management]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#apis:global-transaction-management[Additional support for using Apache Geode in Global, JTA Transactions through Spring's Declarative Transaction Management]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#serialization[Enhanced support for Apache Geode Serialization]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#function-annotations[Annotations for Function Executions]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#apis:continuous-query[Support for Continuous Query]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#bootstrap:lucene[Enhanced support for Apache Lucene Integration]
|
||
* https://docs.spring.io/spring-data/geode/docs/current/reference/html/#gemfire-bootstrap[Bootstrapping a Spring Context with Apache Geode]
|
||
* Spring Tool Suite https://docs.spring.io/sts/nan/v310/NewAndNoteworthy.html[Spring Project Templates for Apache Geode]
|
||
|
||
== 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
|
||
|
||
Here is a quick teaser of an application using Spring Data Repositories in Java:
|
||
|
||
[source,java]
|
||
----
|
||
public interface PersonRepository extends CrudRepository<Person, Long> {
|
||
|
||
List<Person> findByLastname(String lastname);
|
||
|
||
List<Person> findByFirstnameLike(String firstname);
|
||
}
|
||
|
||
@Service
|
||
public class MyService {
|
||
|
||
private final PersonRepository repository;
|
||
|
||
public MyService(PersonRepository repository) {
|
||
this.repository = repository;
|
||
}
|
||
|
||
public void doWork() {
|
||
|
||
repository.deleteAll();
|
||
|
||
Person person = new Person();
|
||
person.setFirstname("John");
|
||
person.setLastname("Blum");
|
||
repository.save(person);
|
||
|
||
List<Person> lastNameResults = repository.findByLastname("Blum");
|
||
List<Person> firstNameResults = repository.findByFirstnameLike("J*");
|
||
}
|
||
}
|
||
----
|
||
|
||
Configure a Pivotal Geode cache and Region (REPLICATE, PARTITION and so on):
|
||
|
||
[source,xml]
|
||
----
|
||
<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">
|
||
|
||
<gfe:cache/>
|
||
|
||
<gfe:partitioned-region id="ExampleRegion" copies="2">
|
||
|
||
<bean id="gemfireTemplate" class="org.springframework.data.gemfire.GemfireTemplate" p:region-ref="ExampleRegion"/>
|
||
<gfe-data:repositories base-package="com.acme"/>
|
||
</beans>
|
||
----
|
||
|
||
=== Maven configuration
|
||
|
||
Add the Maven dependency:
|
||
|
||
[source,xml]
|
||
----
|
||
<dependency>
|
||
<groupId>org.springframework.data</groupId>
|
||
<artifactId>spring-data-geode</artifactId>
|
||
<version>${version}.RELEASE</version>
|
||
</dependency>
|
||
----
|
||
|
||
If you'd rather like the latest snapshots of the upcoming major version, use our Maven snapshot repository and declare the appropriate dependency version.
|
||
|
||
[source,xml]
|
||
----
|
||
<dependency>
|
||
<groupId>org.springframework.data</groupId>
|
||
<artifactId>spring-data-geode</artifactId>
|
||
<version>${version}.BUILD-SNAPSHOT</version>
|
||
</dependency>
|
||
|
||
<repository>
|
||
<id>spring-libs-snapshot</id>
|
||
<name>Spring Snapshot Repository</name>
|
||
<url>https://repo.spring.io/libs-snapshot</url>
|
||
</repository>
|
||
----
|
||
|
||
== Getting Help
|
||
|
||
Having trouble with Spring Data? We’d love to help!
|
||
|
||
* Check the
|
||
https://docs.spring.io/spring-data/geode/docs/current/reference/html/[reference documentation], and https://docs.spring.io/spring-data/geode/docs/current/api/[Javadocs].
|
||
* Learn the Spring basics – Spring Data builds on Spring Framework, check the https://spring.io[spring.io] web-site for a wealth of reference documentation.
|
||
If you are just starting out with Spring, try one of the https://spring.io/guides[guides].
|
||
* If you are upgrading, check out the https://docs.spring.io/spring-data/geode/docs/current/changelog.txt[changelog] for "`new and noteworthy`" features.
|
||
* Ask a question - we monitor https://stackoverflow.com[stackoverflow.com] for questions tagged with https://stackoverflow.com/tags/spring-data[`spring-data-geode`].
|
||
You can also chat with the community on https://gitter.im/spring-projects/spring-data[Gitter].
|
||
* Report bugs with Spring Data for Apache Geode at https://jira.spring.io/browse/DATAGEODE[jira.spring.io/browse/DATAGEODE].
|
||
|
||
== Reporting Issues
|
||
|
||
Spring Data uses JIRA as issue tracking system to record bugs and feature requests. If you want to raise an issue, please follow the recommendations below:
|
||
|
||
* Before you log a bug, please search the
|
||
https://jira.spring.io/browse/DATAGEODE[issue tracker] to see if someone has already reported the problem.
|
||
* If the issue doesn’t already exist, https://jira.spring.io/browse/DATAGEODE[create a new issue].
|
||
* Please provide as much information as possible with the issue report, we like to know the version of Spring Data that you are using and JVM version.
|
||
* If you need to paste code, or include a stack trace use JIRA `{code}…{code}` escapes before and after your text.
|
||
* If possible try to create a test-case or project that replicates the issue. Attach a link to your code or a compressed file containing your code.
|
||
|
||
== Building from Source
|
||
|
||
You don’t need to build from source to use Spring Data (binaries in https://repo.spring.io[repo.spring.io]), but if you want to try out the latest and greatest, Spring Data can be easily built with the https://github.com/takari/maven-wrapper[maven wrapper].
|
||
You also need JDK 1.8.
|
||
|
||
[source,bash]
|
||
----
|
||
$ ./mvnw clean install
|
||
----
|
||
|
||
If you want to build with the regular `mvn` command, you will need https://maven.apache.org/run-maven/index.html[Maven v3.5.0 or above].
|
||
|
||
_Also see link:CONTRIBUTING.adoc[CONTRIBUTING.adoc] if you wish to submit pull requests, and in particular please sign the https://cla.pivotal.io/sign/spring[Contributor’s Agreement] before your first non-trivial change._
|
||
|
||
=== Building reference documentation
|
||
|
||
Building the documentation builds also the project without running tests.
|
||
|
||
[source,bash]
|
||
----
|
||
$ ./mvnw clean install -Pdistribute
|
||
----
|
||
|
||
The generated documentation is available from `target/site/reference/html/index.html`.
|
||
|
||
|
||
== License
|
||
|
||
Spring Data for Apache Geode is Open Source software released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].
|