一个常见的要求是通过 REST 访问 JPA 数据源。我想要相反的情况,即通过将 HTTP 请求发送到 RESTful 持久性服务来工作的 JPA 提供程序。这样做的好处是,任何针对 JPA API 编写的应用程序都可以轻松地在传统的 JPA 提供者(例如 Hibernate)和基于 REST 的 JPA 提供者之间切换,而无需更改代码。
所以我的问题是是否存在现有的基于 REST 的 JPA 提供程序,如果没有,这样的事情是否可行?
首先,JPA 真的是为关系数据库设计的……
其次,没有 RESTful 持久性的标准,因此 JPA-REST 提供程序将特定于该 REST 持久性应用程序。
您可以使用EclipseLink-EIS来实现一些东西。您只需要创建 JCA_RestAdapter 实现。
如果您说“RESTful 持久性服务”时指的是 NoSQL 数据库之一,那么可能。其中一些 NoSQL DB 提供基于 REST 的接口,一些 JPA 提供程序开始支持 NoSQL DB。请参阅http://wiki.eclipse.org/EclipseLink/FAQ/NoSQL。
老实说,您最好只实现 DAO 模式并抽象您的 CRUD(L) 操作。这正是 DAO 的用途。
Datanucleaus 有一个基于 RESTful json API 的 JPA 实现。但是,您的 REST API 必须遵守他们的约定: http ://www.datanucleus.org/products/accessplatform_3_0/json/support.html
他们的 S3 和 GoogleStorage 扩展了 json API。
编辑:在我的原始答案中放入错误产品的链接。
有几种选择。例如,看一下“JEST”:
REST 不是 API(应用程序编程接口)。它是一种架构风格,规定没有 API 来访问服务的设施。
...
在无状态频谱的另一端是 JEE 应用程序服务器的原则——服务器维护所有事物的状态,并且存在一个(或多个)API 用于所有事物。JEE 的这种以服务器为中心、有状态、面向 API 的原则导致了几个障碍。
...
我发现 REST 原则简洁而优雅。我还发现 Java Persistence API (JPA) 提供者在标准化和合理化经典的对象关系阻抗失配方面做得很好。JPA 经常被误解为仅仅是 JDBC 的替代品——但它比 JDBC 甚至比对象关系映射 (ORM) 还要多。JPA 是一种将关系数据作为对象图查看和更新的强大方法。此外,核心 JPA 概念(如分离事务或可定制的闭包或持久身份)似乎与 REST 原则完全一致。
更多链接: