Spring Data - vidyasekaran/current_learning GitHub Wiki
https://spring.io/projects/spring-data
- 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.
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.
Features
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 via JavaConfig and custom XML namespaces Advanced integration with Spring MVC controllers Experimental support for cross-store persistence
- Spring Data JPA, part of the larger Spring Data family, makes it easy to easily implement JPA based repositories. This module deals with enhanced support for JPA based data access layers. It makes it easier to build Spring-powered applications that use data access technologies.
Implementing a data access layer of an application has been cumbersome for quite a while. Too much boilerplate code has to be written to execute simple queries as well as perform pagination, and auditing. Spring Data JPA aims to significantly improve the implementation of data access layers by reducing the effort to the amount that’s actually needed. As a developer you write your repository interfaces, including custom finder methods, and Spring will provide the implementation automatically.
Features
Sophisticated support to build repositories based on Spring and JPA Support for Querydsl predicates and thus type-safe JPA queries Transparent auditing of domain class Pagination support, dynamic query execution, ability to integrate custom data access code Validation of @Query annotated queries at bootstrap time Support for XML based entity mapping JavaConfig based repository configuration by introducing @EnableJpaRepositories.
3.** Spring Data for Spring LDAP** is part of the umbrella Spring Data project which aims to provide a familiar and consistent Repository abstractions for new Spring LDAP.
Introduction The Spring Data LDAP project provides repository abstractions for Spring LDAP on top of Spring LDAP’s LdapTemplate and Object-Directory Mapping.
Features
Spring configuration support using Java-based @Configuration classes or an XML namespace. Annotation based mapping metadata Automatic implementation of Repository interfaces including support for custom query methods. QueryDSL integration to support type-safe queries.
4.** Spring Data MongoDB** - Spring Data for MongoDB is part of the umbrella Spring Data project which aims to provide a familiar and consistent Spring-based programming model for new datastores while retaining store-specific features and capabilities.
- Spring Data Redis, part of the larger Spring Data family, provides easy configuration and access to Redis from Spring applications. It offers both low-level and high-level abstractions for interacting with the store, freeing the user from infrastructural concerns.
Features
Connection package as low-level abstraction across multiple Redis drivers(Lettuce and Jedis). Exception translation to Spring’s portable Data Access exception hierarchy for Redis driver exceptions. RedisTemplate that provides a high-level abstraction for performing various Redis operations, exception translation and serialization support. Pubsub support (such as a MessageListenerContainer for message-driven POJOs). Redis Sentinel and Redis Cluster support. Reactive API using the Lettuce driver. JDK, String, JSON and Spring Object/XML mapping serializers. JDK Collection implementations on top of Redis. Atomic counter support classes. Sorting and Pipelining functionality. Dedicated support for SORT, SORT/GET pattern and returned bulk values. Redis implementation for Spring 3.1 cache abstraction. Automatic implementation of Repository interfaces including support for custom query methods using @EnableRedisRepositories. CDI support for repositories.
-
Spring Data R2DBC, part of the larger Spring Data family, makes it easy to implement R2DBC based repositories. R2DBC stands for Reactive Relational Database Connectivity, an incubator to integrate relational databases using a reactive driver. Spring Data R2DBC applies familiar Spring abstractions and repository support for R2DBC. It makes it easier to build Spring-powered applications that use relational data access technologies in a reactive application stack.
-
Spring Data REST is part of the umbrella Spring Data project and makes it easy to build hypermedia-driven REST web services on top of Spring Data repositories.
Spring Data REST builds on top of Spring Data repositories, analyzes your application’s domain model and exposes hypermedia-driven HTTP resources for aggregates contained in the model.
- The Apache Cassandra NoSQL Database offers many new capabilities for teams seeking a solution to handle high velocity, high volume and variable data flows. This new way of thinking introduces new concepts and a learning curve that can be intimidating to team members and team managers. Spring Data for Apache Cassandra offers a familiar interface to those who have used other Spring Data modules in the past.
The learning curve for developing applications with Apache Cassandra is significantly reduced when using Spring Data for Apache Cassandra. With the power to stay at a high level with annotated POJOs, or at a low level with high performance data ingestion capabilities, the Spring Data for Apache Cassandra templates are sure to meet every application need.
Features
Build repositories based on common Spring Data interfaces Support for synchronous, reactive, and asynchronous data operations Support for XML based Keyspace creation and CQL Table creation JavaConfig and XML Support for all Cluster and Session Capabilities Exception Translation to the familiar Spring DataAccessException hierarchy Convenient QueryBuilders to eliminate the need to learn CQL Automatic implementation of Repository interfaces including support for custom query methods
2.x versions are based on the 3.x DataStax CQL Java Driver, 3.x versions use DataStax Java Driver 4.x
- The primary goal of the Spring Data for Apache Geode project is to make it easier to build highly scalable Spring powered applications using Apache Geode for distributed data management.
Spring Data for Apache Geode brings the full power of the Spring Framework to your Apache Geode applications.
- The primary goal of the Spring Data for Pivotal GemFire project is to make it easier to build highly scalable Spring powered applications using Pivotal GemFire for distributed data management.
Spring Data for Pivotal GemFire brings the full power of the Spring framework to your Pivotal GemFire applications.
- Spring Data for Couchbase is part of the umbrella Spring Data project which aims to provide a familiar and consistent Spring-based programming model for new datastores while retaining store-specific features and capabilities.
The Spring Data Couchbase project provides integration with the Couchbase Server database. Key functional areas of Spring Data Couchbase are a POJO centric model for interacting with Couchbase Buckets and easily writing a Repository style data access layer.
-
Spring Data for Elasticsearch is part of the umbrella Spring Data project which aims to provide a familiar and consistent Spring-based programming model for for new datastores while retaining store-specific features and capabilities. The Spring Data Elasticsearch project provides integration with the Elasticsearch search engine. Key functional areas of Spring Data Elasticsearch are a POJO centric model for interacting with a Elastichsearch Documents and easily writing a Repository style data access layer.
-
This project is an extension of the Spring Data JPA project to allow access to entity revisions managed by Hibernate Envers. The sources mostly originate from a contribution of Philipp Hügelmeyer @hygl.
-
Spring Data Neo4j, part of the larger Spring Data family, provides easy configuration and access to Neo4j Graph Databases from Spring applications. It offers three different levels of abstraction to access the store. The Neo4j client, the Neo4j Template, and the Neo4j Repositories. Spring Data Neo4j offers advanced features to map annotated entity classes to the Neo4j Graph Database. The template programming model is equivalent to other Spring templates and builds the basis for interaction with the graph and is also used for the Spring Data repository support. Spring Data Neo4j is a core part of the Spring Data project which aims to provide convenient data access for NoSQL databases.
-
Spring Data JDBC Extensions is part of the umbrella Spring Data project. The JDBC support in the Spring Framework is extensive and covers the most commonly used features. This extension project provides additional support for working with advanced Oracle database features.