有没有独立于持久化技术的Java数据API

Is there a Java Data API independent of persistence technology

我正在寻找一种 API 可以独立于底层持久性技术访问数据。 CRUD 和一些搜索功能就足够了。

在 UI 应用程序应轻松适应不断变化的数据层并且我们无法控制该变化的情况下,我需要这个。例如,这些更改可能是

对于特定的一组持久性技术,有几种方法可以解决这个问题。例如

但到目前为止,我发现没有任何解决方案可以同时处理多种技术。

也许这就是坚持不懈的圣杯,但也许有解决办法,只是我没有找到。

有什么想法吗?

Java 持久性 API (JPA) 对此很常见。已经有许多提供程序可用。如果需要,您还可以为自定义后端创建自己的 JPA 提供程序。

通用和抽象 API 层的问题在于它受到所有其他可能提供程序的 "common denominator" 的限制。有时您必须打破这种抽象,以更高效、特定于平台的方式操作数据。在你的计划中注意这一点,希望它能顺利!

解决方案是 JDO Java 数据对象。

除了 JPA 之外,还有不止 RDBMS 系统的实现。功能列表也可以看作是 JPA 的超集。

JDO 不如 JPA 受欢迎,尽管它很老,因为它的第一个 JRS 是 JSR-12。它还活着;规范 3.1 的最后一次更新是在 2015 年完成的。

在此处查找有关 JDO 的一些信息:http://db.apache.org/jdo/index.html

DataNucleus 是一个全面的实现,因为它支持许多持久性技术:http://www.datanucleus.org/index.html
- 支持的 API:JDO 3.2、JPA 2.2+、REST
- 支持映射:JDO、JPA
- 支持的数据存储:RDBMS、Excel、OOXML、ODF、XML、HBase、MongoDB、Cassandra、Neo4j、JSON、Amazon S3、GoogleStorage、 LDAP