Skip to content

jcparedese/spring-data-geode

 
 

Repository files navigation

Spring Data Geode Spring Data Geode

Spring Data for Apache Geode icon?job=spring data geode%2Fmain&subject=Build Gitter

Spring Data for Apache Geode brings the full power of the Spring Framework to your Apache Geode applications.

NOTICE

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 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, moving it 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 VOTE was cast to move the Apache Geode project into 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 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 releases).

Since Spring Data / Spring Boot 2.7 were 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 leading up to a final 2.8.0 GA in a relatively compressed timeframe.

Now that this VOTE has been cast, we have changed our decision and we will no longer proceed with SDG 2.8. In addition, although we will honor our SDG project commitments and 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 a minimal maintenance node 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) 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 (pending review and approval) on the Spring Data for VMware GemFire project page at spring.io.

Features

Code of Conduct

This project is governed by the 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 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<Person> findByLastnameLike(String lastname);

  List<Person> findByFirstname(String firstname);
}

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">

  <gfe:client-cache/>

  <gfe:client-region id="People" shortcut="LOCAL">

  <bean id="gemfireTemplate" class="org.springframework.data.gemfire.GemfireTemplate" p:region-ref="ExampleRegion"/>
	<gfe-data:repositories base-package="example.app"/>
</beans>

Maven configuration

Add the Maven dependency:

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-geode</artifactId>
  <version>${version}.RELEASE</version>
</dependency>

If you’d rather use the latest snapshots of the upcoming major/minor version, use our Maven snapshot repository and declare the appropriate dependency version:

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-geode</artifactId>
  <version>${version}.BUILD-SNAPSHOT</version>
</dependency>

<repository>
  <id>spring-snapshot</id>
  <name>Spring Snapshot Repository</name>
  <url>https://repo.spring.io/snapshot</url>
</repository>

Getting Help

Having trouble with Spring Data? We’d love to help!

Reporting Issues

Spring Data uses GitHub Issues as the 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 GitHub Issues to see if someone has already reported the problem.

  • If the issue does not already exist, 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 markdown ``` escapes before and after your text.

  • If possible try to create a test case or project that reproduces 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 repo.spring.io), but if you want to try out the latest and greatest, Spring Data can be easily built with the maven wrapper. You also need JDK 1.8.

 $ ./mvnw clean install

If you want to build with the regular mvn command, you will need Maven v3.5.0 or above.

Also see CONTRIBUTING.adoc if you wish to submit pull requests, and in particular please sign the Contributor’s Agreement before your first non-trivial change.

Building reference documentation

Building the documentation builds also the project without running tests.

 $ ./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 Apache 2.0 license.

About

Spring Data support for Apache Geode

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%