Spring Data —— 完全统一的API?

Spring Data 作为SpringSource的其中一个父项目, 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。

无论是哪种持久化存储, 数据访问对象(或称作为DAO,即Data Access Objects)通常都会提供对单一域对象的CRUD (创建、读取、更新、删除)操作、查询方法、排序和分页方法等。Spring Data则提供了基于这些层面的统一接口(CrudRepository,PagingAndSortingRepository)以及对持久化存储的实现。

你可能接触过某一种Spring 模型对象——比如JdbcTemplate——来编写访问对象的实现。基于Spring Data的数据访问对象, 我们只需定义和编写一些查询方法的接口(基于不同的持续化存储, 定义有可能稍有不同)。Spring Data会在运行时间生成正确的实现。 请看下面的例子:

public interface UserRepository extends MongoRepository<User, String> {
 @Query("{ fullName: ?0 }")
 List<User> findByTheUsersFullName(String fullName);

 List<User> findByFullNameLike(String fullName, Sort sort);
}
...

Autowired UserRepository repo;

本文将比较两个JPA的子项目, MongoDB和Neo4j。JPA是J2EE的一部分, 它定义了一系列用于操作关系型数据库和O/R映射的API。 MongoDB是一种可扩展的、高性能的、开源的、面向文档的数据库。Neo4j则是一种图形数据库,一种完整的用于存储图形数据的事务性数据库。

时间: 2024-07-28 16:11:01

Spring Data —— 完全统一的API?的相关文章

利用Dojo Data开发统一的数据访问模型

目前,企业内部的数据量正快速膨胀,客户端和服务器端之间交换的数据格式也是多种多样.由于 Web2.0.RIA 的快速发展,在客户端处理数据逐渐成为一种趋势,但是基于 XMLHTTPRequest 的一般 Ajax 客户端程序必须由 Web 开发人员自己编写处理各种数据格式的代码.这样,不仅加重了客户端逻辑的复杂性,而且降低了程序的可维护性和可扩展性.而 Dojo Data 库旨在为不同的数据格式提供一种统一的数据访问模型,使得数据的读写都采用统一的接口,从而有利于程序的移植和维护.通过阅读本文读

《Spring Data实战》——导读

前言 数据访问领域在过去的7年间发生了重要的变化.过去30年间一直占据企业级数据存储和处理核心位置的关系型数据库已经不能再独领风骚了.在过去的7年间诞生了很多可选的数据存储形式,当然也有的面临着消亡,它们被使用到了带有关键任务的企业级应用程序之中.这些新的数据存储形式是为了解决特定的数据访问问题而设计的,使用关系型数据库通常无法高效地解决这些问题. 将关系型数据库推到拐点的一个问题就是扩展性(scale).试问,我们如何将几百甚至几千TB(terabyte)的数据存储到关系型数据库中?这个问题让

使用Spring Data 仓库工作 4.1-4.3

Spring Data 仓库抽象的目标是为了明显减少为了各种持久存储的来实现的数据访问层的样板代码量. Spring Data存储库文档和你的模块 本章解释了Spring Data 存储库的核心观念,以及接口.本章的信息来自Spring Data公共模块.它使用了Java Persistence API(JPA)中的配置以及代码实例.将命名空间声明和要扩展的类型扩展为你将会使用的模块的等效项.命名空间引用包含了所有被Spring Data模块支持的存储库API的XML配置,存储库查询关键字包含了

Spring Data 官方文档》4.7 Spring Data扩展

4.7 Spring Data扩展 这部分说明Spring Data一系列的扩展功能,可以使Spring Dta使用多样的上下文.目前大部分集成是针对Spring MVC. 4.7.1 Querydsl扩展 Querydsl是一个框架,通过它的流式API构建静态类型的SQL类查询.多个Spring Data模块通过QueryDslPredicateExecutor与Querydsl集成. 例29 QueryDslPredicateExecutor接口 1 public interface Que

springboot(五):spring data jpa的使用

在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spring data jpa 开发时,发现国内对spring boot jpa全面介绍的文章比较少案例也比较零碎,因此写文章总结一下.本人也正在翻译Spring Data JPA 参考指南,有兴趣的同学欢迎联系我,一起加入翻译中! spring data jpa介绍 首先了解JPA是什么? JPA(Ja

Spring Data Redis—Pub/Sub(附Web项目源码)

一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE 命令接收信息的时候,我们称这个客户端为订阅者(subscriber). 为了解耦发布者(publisher)和订阅者(subscriber)之间的关系,Redis 使用了 channel (频道)作为两者的中介 -- 发布者将信息直接发布给 channel ,而 channel 负责将信息发送给适当

Spring Data Redis—Pub/Sub(附Web项目源码) (转)

一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE 命令接收信息的时候,我们称这个客户端为订阅者(subscriber). 为了解耦发布者(publisher)和订阅者(subscriber)之间的关系,Redis 使用了 channel (频道)作为两者的中介 -- 发布者将信息直接发布给 channel ,而 channel 负责将信息发送给适当

《Spring Data实战》——第1章 Spring Data项目 1.1为Spring开发人员提供的NoSQL数据访问功能

第一部分 背景知识 第1章 Spring Data项目 Spring Data项目是在"Spring One 2010开发者大会"上创建的,该项目起源于当年早些时候Rod Johnson(SpringSource)和Emil Eifrem(Neo Technologies)共同参与的一场黑客会议.他们试图把Neo4j图形数据库整合到Spring框架中,并评估了各种不同的方式.这次会议最终为初始版本的Spring Data Neo4j模块奠定了基础,这个新的SpringSource项目旨

《Spring Data实战》——2.2 定义查询方法

2.2 定义查询方法 2.2.1 查找查询的策略 刚才看到的接口只声明了一个简单的查询方法.声明的方法会被基础设施探测到并进行解析,最终衍生出与存储相关的查询.但是,随着查询变得更加复杂,方法名会变得很冗长,显得很笨拙.对于更复杂的查询,依靠方法解析器所支持的关键字就不够了.因此,每种存储模块都提供了@Query注解,如示例2-8所示,它会接受存储相关的查询语言所支持的查询字符串,从而允许查询执行时进一步地定制化. 示例2-8 使用@Query注解手动定义查询 在这里,我们使用JPA作为例子并手