Spring Data的目的是什么?它的抽象程度如何?

yat*_*gan 2 spring spring-data spring-data-redis spring-data-gemfire

在尝试理解"Spring Data"的目的时,我遇到了本文,并尝试了几个Gemfire/Redis存储库及其相应的Spring-Data组件的示例.有人可以帮助我解决以下问题.

场景:当GemFire是我的数据存储区时,我不得不在GemFireTemplate上使用方法 create,get和remove来执行CRUD操作.当Redis是我的数据存储区时,我不得不在 RedisTemplate上使用方法 .opsForHash().put,.opsForHash().get和.opsForHash().delete来执行相同的CRUD操作.

问题:

是不是Spring-Data应该为底层数据存储提供一定程度的抽象?如果我希望知道相应的CRUD方法并且基于底层数据存储具有不同的API,那么Spring-Data组件会带来什么样的抽象?我不能直接使用Jedis或Java客户端进行Gemfire来执行这些特定于数据仓库的CRUD操作吗?

这个链接似乎解释了这一点,但看起来我需要一些帮助来理解它.

所有持久性存储都没有通用API.差异太基础了.但Spring Data项目确实提供了一种通用的编程模型来访问您的数据

Tho*_*ont 6

感谢您提出的问题,因为Master Slave已经很好地指出了Spring Data提供的好处是多方面的,但是商店模块之间支持的功能有时会出现功能上的差异.这些部分是由特定底层数据存储的不同特性和功能以及焦点和时间限制所驱动的.

Redis和Gemfire通过提供存储和访问模型等关键值来扩展类似的商店技术.但是,Gemfire提供了比Redis更丰富的查询功能.这就是为什么Spring Data Gemfire已经有很长一段时间的存储库抽象的原因之一.

另一方面,Redis是一个不同的故事 - 正如Master Slave已经提到的那样,你可以轻松地构建自己的定制Redis存储库 - 这就是许多人所做的 - 但通常与Redis的交互对于用例来说非常独特所以我们没有看不到那么多功能重叠来激发一个通用的实现,它不仅仅是"保存"和"加载".

我们有一个向Spring Data Redis添加存储库抽象的,但我们还没有时间去做.