为不受支持的数据库实现一个自定义的Spring数据存储库



我想为一个当前不支持的数据库实现一个Spring数据存储库(炒作性问题-无需询问数据库(。

这是怎么可能的,我在哪里可以有这样的例子?

简短的回答是"是的,肯定的"。Spring-data的主要意图之一是在相同的API风格下统一对不同数据存储技术的访问。因此,您可以为任何数据库实现spring数据适配器,只要它值得用Java实现到该数据库的连接器(这对大多数数据库来说肯定是可能的(。

长时间的回答需要几篇博客文章,甚至一本小书:-(但让我强调一下其中的几个时刻。每个现有的spring-data模块都公开了API风格中的一种(或两种(:

  • 命令-以各种模板类的形式(例如RedisTemplate(。它主要用于没有查询语言,但只有程序化API的数据库。所以您只需将数据库的API封装到模板类中,就完成了
  • 声明性的——以所谓的声明性存储库的形式,这是一种非常复杂的机制,可以将方法签名或方法签名本身的注释与数据库的本地查询进行匹配。幸运的是,spring数据共享模块为此提供了大量的脚手架和公共基础设施代码,所以您只需要填补特定数据存储机制的空白。您可以从我的会议演讲中看到幻灯片组,我在其中高级别解释了特定spring数据模块如何基于用户声明生成存储库的实际实现的机制。或者,您可以直接进入任何现有的模块并查看源代码。其中最有趣的部分通常是RepositoryFactory和QueryLookupStrategy的实现

这是弹簧数据概念的极其简化的视图。为了获得更详细的信息和对核心原理的解释,我建议阅读springdatacommons参考文档,看看springdatakeyvalue项目,这是实现用于键值存储的springdatamodule的一个很好的起点。