Restructured content of the project page.

Added mission statement to billboard description. Overhaul of feature list.

More condensed view of the individual projects. Moved code samples to the Quick Start section. Moved release train section after the module listing.

Removed detailed list of Spring Boot starters and linked to the reference documentation instead.
This commit is contained in:
Oliver Gierke
2015-08-22 12:20:04 +02:00
parent f946b5eb1d
commit 1fe61d3b7e
2 changed files with 76 additions and 166 deletions

View File

@@ -12,19 +12,7 @@
{{ breadcrumb | markdownify }}
</div>
<div class="project--title">{{ site.name }}
<div class="project--links--container">
<a href="{{ site.github_repo_url }}" class="project-link">
<i class="icon-github"></i>
</a>
{% if site.forum %}
<a href="{{ site.forum }}" class="project-link project-link-forum">
<div class="spring-icon spring-icon-forum">
</div>
</a>
{% endif %}
</div>
</div>
<div class="project--title">{{ site.name }}</div>
<div class="project--description">
{{ billboard_description | markdownify }}

View File

@@ -3,12 +3,10 @@ title: Spring Data
badges:
twitter: SpringData
# Customize your project's badges. Delete any entries that do not apply.
custom:
- name: Source (GitHub)
url: https://github.com/spring-projects/spring-data
icon: github
- name: StackOverflow
url: http://stackoverflow.com/questions/tagged/spring-data
@@ -17,24 +15,69 @@ badges:
<!DOCTYPE HTML>
<html lang="en-US">
{% capture billboard_description %}
Makes it easy to use new data access technologies, such as non-relational databases, map-reduce frameworks, and cloud based data services. Spring Data also provides improved support for relational database technologies. This is an umbrella project which contains many subprojects that are specific to a given database. The projects are developed by working together with many of the companies and developers that are behind these exciting technologies.
Spring Data's mission is to provide a familiar and consistent, Spring-based programming model for data access while still retaining the special traits of the underlying data store.
<br /><br />
It makes it easy to use data access technologies, relational and non-relational databases, map-reduce frameworks, and cloud-based data services. This is an umbrella project which contains many subprojects that are specific to a given database. The projects are developed by working together with many of the companies and developers that are behind these exciting technologies.
{% endcapture %}
{% capture main_content %}
Spring Data provides a simple way to write the lowest level, boiler plate operations you have always written with ease. No need to implement the same handful of operations as you embark on a new project. Instead, focus on the domain model of your business and have basic persistence APIs ready to go. When it's time to write the complex data warehouse report that involves joining a dozen different bits of data, go into your datastore's specific APIs to leverage them as needed. You also inherit best practices for repository-based solutions. Additionally, export your repositories with a full blown hypermedia-driven API by adding a single dependency.
## Features
* Powerful Repository and custom object-mapping abstractions
* Support for cross-store persistence
* Dynamic query generation from query method names
* Powerful repository and custom object-mapping abstractions
* Dynamic query derivation from repository method names
* Implementation domain base classes providing basic properties
* Support for transparent auditing (created, last changed)
* Possibility to integrate custom repository code
* Easy Spring integration with custom namespace
* Easy Spring integration via JavaConfig and custom XML namespaces
* Advanced integration with Spring MVC controllers
* Experimental support for cross-store persistence
<a name="main-modules"></a>
## Main modules
<!-- Spring Data Commons -->
{% capture project_description %}
Core Spring concepts underpinning every Spring Data project.
{% endcapture %}
* [Spring Data Commons](http://docs.spring.io/spring-data/commons/docs/current/reference/html/) - Core Spring concepts underpinning every Spring Data project.
* [Spring Data JPA](http://projects.spring.io/spring-data-jpa) - Makes it easy to implement JPA-based repositories.
* [Spring Data MongoDB](http://projects.spring.io/spring-data-mongodb) - Spring based, object-document support and repositories for MongoDB.
* [Spring Data Redis](http://projects.spring.io/spring-data-redis) - Provides easy configuration and access to Redis from Spring applications.
* [Spring Data Solr](http://projects.spring.io/spring-data-solr) - Spring Data module for Apache Solr.
* [Spring Data Gemfire](http://projects.spring.io/spring-data-gemfire) - Provides easy configuration and access to GemFire from Spring applications.
* [Spring Data REST](http://projects.spring.io/spring-data-rest) - Exports Spring Data repositories as hypermedia-driven RESTful resources.
<a name="community-modules"></a>
## Community modules
* [Spring Data Cassandra](http://projects.spring.io/spring-data-cassandra) - Spring Data module for Apache Cassandra.
* [Spring Data Couchbase](http://projects.spring.io/spring-data-couchbase) - Spring Data module for Couchbase.
* [Spring Data DynamoDB](https://github.com/michaellavelle/spring-data-dynamodb) - Spring Data module for DynamoDB.
* [Spring Data Elasticsearch](http://projects.spring.io/spring-data-elasticsearch) - Spring Data module for Elasticsearch.
* [Spring Data Neo4j](http://projects.spring.io/spring-data-neo4j) - Spring based, object-graph support and repositories for Neo4j.
<a name="related-modules"></a>
## Related modules
* [Spring Data JDBC Extensions](http://projects.spring.io/spring-data-jdbc-ext) - Provides extensions to the JDBC support provided in the Spring Framework.
* [Spring for Apache Hadoop](http://projects.spring.io/spring-hadoop) - Simplifies Apache Hadoop by providing a unified configuration model and easy to use APIs for using HDFS, MapReduce, Pig, and Hive.
<a name="release-train"></a>
## Release train
Spring Data is an umbrella project consisting of independent projects with, in principle, different release cadences. To manage the portfolio, a BOM (Bill of Materials - see this [example](https://github.com/spring-projects/spring-data-examples/tree/master/bom)) is published with a curated set of dependencies on the individual project. The release trains have names, not versions, to avoid confusion with the sub-projects.
The names are an alphabetic sequence (so you can sort them chronologically) with names of famous computer scientists and software developers. When point releases of the individual projects accumulate to a critical mass, or if there is a critical bug in one of them that needs to be available to everyone, the release train will push out "service releases" with names ending "-SRX", where "X" is a number.
<a name="quick-start"></a>
## Quick Start
{% include download_widget.md %}
For a quick taste, look at the following domain object:
@@ -42,18 +85,16 @@ For a quick taste, look at the following domain object:
@Entity
public class Employee {
private @Id @GeneratedValue Long id;
private String firstName;
private String lastName;
private String description;
private @Id @GeneratedValue Long id;
private String firstName, lastName, description;
private Employee() {}
private Employee() {}
public Employee(String firstName, String lastName, String description) {
this.firstName = firstName;
this.lastName = lastName;
this.description = description;
}
public Employee(String firstName, String lastName, String description) {
this.firstName = firstName;
this.lastName = lastName;
this.description = description;
}
}
```
@@ -62,23 +103,21 @@ This defines a simple JPA entity with a few fields. The following code shows a s
```java
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
Employee findByFirstName(String firstName);
List<Employee> findByLastName(String lastName);
Employee findByFirstName(String firstName);
List<Employee> findByLastName(String lastName);
}
```
This interface extends Spring Data's `CrudRepository` and defines the type (`Employee`) and the id type (`Long`).
Put this code inside a Spring Boot application with `spring-boot-starter-data-jpa` like this:
This interface extends Spring Data's `CrudRepository` and defines the type (`Employee`) and the id type (`Long`). Put this code inside a Spring Boot application with `spring-boot-starter-data-jpa` like this:
```java
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
```
@@ -90,136 +129,19 @@ Launch your app and Spring Data (having been autoconfigured by Boot, [SQL](http:
* `find(Long)`
* `findAll()`
On top of the CRUD operations inherited from `CrudRepository`, the two interface methods define **finders**.
On top of the CRUD operations inherited from `CrudRepository`, the interface defines two query methods.
* `findByFirstName` automatically writes a JPA query based on firstName and only return the first employee found.
* `findByLastName` automatically writes a JPA query based on lastName and returns a collection.
* `findByFirstName(…)` automatically writes a JPA query based on firstName and only return the first employee found.
* `findByLastName(…)` automatically writes a JPA query based on lastName and returns a collection.
<a name="main-projects"></a>
<a name="spring-boot-starters"></a>
## Spring Boot starters
## Main Projects
If you are using Spring Boot, you will inherit predefined versions for each project. To plugin a newer or older release train, configure the `spring-data-releasetrain.version` property to the release train iteration name you want to use.
<!-- Spring Data Commons -->
{% capture project_description %}
Core Spring concepts underpinning every Spring Data project.
{% endcapture %}
{% include project_block.md site_url="http://docs.spring.io/spring-data/commons/docs/current/reference/html/" repo_url="http://github.com/spring-projects/spring-data-commons" project_title="Spring Data Commons" project_description=project_description %}
<!-- Spring Data JPA -->
{% capture project_description %}
Makes it easy to implement JPA-based repositories.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-jpa" repo_url="http://github.com/spring-projects/spring-data-jpa" project_title="Spring Data JPA" project_description=project_description %}
<!-- Spring Data MongoDB -->
{% capture project_description %}
Spring based, object-document support and repositories for MongoDB.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-mongodb" repo_url="http://github.com/spring-projects/spring-data-mongodb" project_title="Spring Data MongoDB" project_description=project_description %}
<!-- Spring Data Neo4j -->
{% capture project_description %}
Spring based, object-graph support and repositories for Neo4j.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-neo4j" repo_url="http://github.com/spring-projects/spring-data-neo4j" project_title="Spring Data Neo4j" project_description=project_description %}
<!-- Spring Data Redis -->
{% capture project_description %}
Provides easy configuration and access to Redis from Spring applications.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-redis" repo_url="http://github.com/spring-projects/spring-data-redis" project_title="Spring Data Redis" project_description=project_description %}
<!--Spring Data Solr -->
{% capture project_description %}
Spring Data module for Apache Solr.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-solr" repo_url="https://github.com/spring-projects/spring-data-solr" project_title="Spring Data Solr" project_description=project_description %}
<!-- Spring For Hadoop -->
{% capture project_description %}
Simplifies Apache Hadoop by providing a unified configuration model and easy to use APIs for using HDFS, MapReduce, Pig, and Hive.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-hadoop" repo_url="http://github.com/spring-projects/spring-hadoop" project_title="Spring for Hadoop" project_description=project_description %}
<!--Spring Data GemFire -->
{% capture project_description %}
Provides easy configuration and access to GemFire from Spring applications.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-gemfire" repo_url="http://github.com/spring-projects/spring-data-gemfire" project_title="Spring Data GemFire" project_description=project_description %}
<!--Spring Data REST -->
{% capture project_description %}
Exports Spring Data repositories as hypermedia-driven RESTful resources.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-rest" repo_url="http://github.com/spring-projects/spring-data-rest" project_title="Spring Data REST" project_description=project_description %}
<!--Spring Data JDBC Extensions -->
{% capture project_description %}
Provides extensions to the JDBC support provided in the Spring Framework.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-jdbc-ext" repo_url="http://github.com/spring-projects/spring-data-jdbc-ext" project_title="Spring Data JDBC Extensions" project_description=project_description %}
<span id="quick-start"></span>
## Quick Start
{% include download_widget.md %}
## Release Trains
Spring Data is an umbrella project consisting of independent projects with, in principle, different release cadences. To manage the protfolio, a BOM (Bill of Materials) is published with a curated set of dependencies on the individual project. The release trains have names, not versions, to avoid confusion with the sub-projects. The names are an alphabetic sequence (so you can sort them chronologically) with names of famous computer scientists and software developers. When point releases of the individual projects accumulate to a critical mass, or if there is a critical bug in one of them that needs to be available to everyone, the release train will push out "service releases" with names ending ".SRX", where "X" is a number.
If you are using Spring Boot, you will inherit predefined versions for each project. To plugin a newer or older release train, use the BOM information shown above to adjust the version number.
The following projects have Spring Boot starters:
* org.springframework.boot:spring-boot-starter-data-jpa
* org.springframework.boot:spring-boot-starter-data-mongodb
* org.springframework.boot:spring-boot-starter-data-neo4j
* org.springframework.boot:spring-boot-starter-data-redis
* org.springframework.boot:spring-boot-starter-data-solr
* org.springframework.boot:spring-boot-starter-data-gemfire
* org.springframework.boot:spring-boot-starter-data-rest
The following projects will inherit versioning as well:
* org.springframework.data:spring-data-hadoop
* org.springframework.data:spring-data-oracle
Spring Boot provides so called started POMs for a variety of SPring Data modules which pull in a curated set of dependencies you'll need to use the individual modules. For details on that see the [Spring Boot reference documentation](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter-poms).
<div style="padding-bottom: 20px;"></div>
<a name="community-projects"></a>
## Community Projects
<!--Spring Data Couchbase -->
{% capture project_description %}
Spring Data module for Couchbase.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-couchbase" repo_url="https://github.com/spring-projects/spring-data-couchbase" project_title="Spring Data Couchbase" project_description=project_description %}
<!--Spring Data Elasticsearch -->
{% capture project_description %}
Spring Data module for Elasticsearch.
{% endcapture %}
{% include project_block.md site_url="https://github.com/spring-projects/spring-data-elasticsearch" repo_url="https://github.com/spring-projects/spring-data-elasticsearch" project_title="Spring Data Elasticsearch" project_description=project_description %}
<!--Spring Data Cassandra -->
{% capture project_description %}
Spring Data module for Cassandra.
{% endcapture %}
{% include project_block.md site_url="http://projects.spring.io/spring-data-cassandra" repo_url="https://github.com/spring-projects/spring-data-cassandra" project_title="Spring Data Cassandra" project_description=project_description %}
<!--Spring Data DynamoDB -->
{% capture project_description %}
Spring Data module for DynamoDB.
{% endcapture %}
{% include project_block.md site_url="https://github.com/michaellavelle/spring-data-dynamodb" repo_url="https://github.com/michaellavelle/spring-data-dynamodb" project_title="Spring Data DynamoDB" project_description=project_description %}
<!-- end main_content -->
{% endcapture %}