Spring Data是Spring的一个子项目,旨在统一和简化各类型数据的持久化存储方式,而不拘泥于是关系型数据库还是NoSQL数据库。无论是哪种持久化存储方式,数据访问对象(Data Access Objects, DAO)都会提供对对象的增加、删除、修改和查询的方法,以及排序和分页方法等。Spring Data 提供了基于这些层面的统一接口(如:CrudRepository、PagingAndSorting- Repository),以实现持久化的存储。Spring Data包含多个子模块,主要分为主模块和社区模块。
(1)主要模块
Spring Data Commons:提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化。
Spring Data JDBC:提供了对 JDBC 的支持,其中封装了 JDBCTemplate
Spring Data JDBC Ext:提供了对JDBC的支持,并扩展了标准的JDBC,支持Oracle RAD、高级队列和高级数据类型。
Spring Data JPA:简化创建JPA数据访问层和跨存储的持久层功能。
Spring Data KeyValue:集成了Redis和Riak,提供多个常用场景下的简单封装,便于构建 key-value 模块。
Spring Data LDAP:集成了 Spring Data repository 对 Spring LDAP 的支持。
Spring Data MongoDB:集成了对数据库 MongoDB 支持。
Spring Data Redts:集成了对 Redis 的支持。
Spring Data REST:集成了对 RESTful 资源的支持。
Spring Data for Apache Cassandra :集成了对大规模、高可用数据源 Apache Cassandra 的支持。
Spring Data for Apace Geode:集成了对 Apache Geode 的支持。
Spring Data for Apache Solr:集成了对 Apache Solr 的支持
Spring Data for Pivotal GemFire:集成了对 Pivotal GemFire 的支持。
(2)社区模块
Spring Data Aerospike:集成了对 Aerospike 的支持
Spring Data ArangoDB:集成了对 ArangoDB 的支持
Spring Data Couchbase:集成了对 Couchbase 的支持
Spring Data Azure Cosmos DB:集成了对 Azure Cosmos 的支持。
Spring Data Cloud Datastore:集成了对 Google Datastore 的支持。
Spring Data Cloud Spanner:集成了对 Google Spanner 的支持。
Spring Data DynamoDB:集成了对 DynamoDB 的支持。
Spring Data Elasticsearch:集成了对搜索引擎框架 Elasticsearch 的支持。
Spring Data Hazelcast:集成了对 Hazelcast 的支持。
Spring Data Jest:集成了对基于 Jest REST client 的 Elasticsearch 的支持。
Spring Data Neo4j:集成了对Neo4j数据库的支持。
Spring Data Vault:集成了对 Vault 的支持。
2.2认识JPA
JPA (Java Persistence API )是Java的持久化API,用于对象的持久化。它是一个非常强大的ORM持久化的解决方案,免去了使用JDBCTemplate开发的编写脚本工作。JPA通过简单约定好接口方法的规则自动生成相应的JPQL语句,然后映射成POJO对象。
JPA是一个规范化接口,封装了Hibernate的操作作为默认实现,让用户不通过任何配置即可完成数据库的操作。JPA、Spring Date和Hibernate的关系如图所示。