Implement a custom Spring Data Repository for a non-supported database

时间:2018-07-24 10:23:31

标签: spring spring-data

I want to implement a Spring Data Repository for a database which is not currentlty supported (hyphothetical question - no need to ask about the database).

How is this possible and where can I have an example of that?

1 个答案:

答案 0 :(得分:0)

简短的回答是“肯定的”。 Spring-data的主要目的之一就是以相同的API风格统一对不同数据存储技术的访问。因此,您可以为任何数据库实现spring-data适配器,只要值得在Java中实现该数据库的连接器即可(对于大多数数据库而言,这肯定是可能的)。

长答案将需要几篇博客文章,甚至是一本小书:-)但是,让我仅强调一下一下。每个现有的spring-data模块都公开API风味中的一种(或两种):

  • 势在必行-采用各种模板类的形式(例如RedisTemplate)。它主要用于不具有查询语言的数据库,而仅适用于编程API。因此,您只需将数据库的API包装到模板类中就可以了。
  • 声明性的-以所谓的Declarative Repositories的形式,一种相当复杂的机制将方法签名或方法签名本身上的注释与数据库的本机查询进行匹配。幸运的是,spring-data-commons模块为此提供了许多脚手架和通用基础结构代码,因此您只需要填补特定数据存储机制的空白即可。您可以在我的会议演讲中看到slide deck,我在较高级别上解释了特定spring-data模块如何基于用户声明生成存储库的实际实现的机制。或者,您可以进入任何现有模块并查看源代码。通常,最有趣的部分是RepositoryFactory和QueryLookupStrategy实现。

这是弹簧数据概念的极其简化的视图。为了获得更详细的信息和核心原理的解释,建议您阅读spring-data-commons参考文档并查看spring-data-keyvalue项目,这是为关键实现Spring Data Module的一个很好的起点。值存储。