2

一个常见的要求是通过 REST 访问 JPA 数据源。我想要相反的情况,即通过将 HTTP 请求发送到 RESTful 持久性服务来工作的 JPA 提供程序。这样做的好处是,任何针对 JPA API 编写的应用程序都可以轻松地在传统的 JPA 提供者(例如 Hibernate)和基于 REST 的 JPA 提供者之间切换,而无需更改代码。

所以我的问题是是否存在现有的基于 REST 的 JPA 提供程序,如果没有,这样的事情是否可行?

4

3 回答 3

1

首先,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 的用途。

于 2012-05-25T04:31:52.583 回答
1

Datanucleaus 有一个基于 RESTful json API 的 JPA 实现。但是,您的 REST API 必须遵守他们的约定: http ://www.datanucleus.org/products/accessplatform_3_0/json/support.html

他们的 S3 和 GoogleStorage 扩展了 json API。

编辑:在我的原始答案中放入错误产品的链接。

于 2014-01-31T22:59:28.350 回答
0

有几种选择。例如,看一下“JEST”:

https://www.ibm.com/developerworks/mydeveloperworks/blogs/pinaki/entry/rest_and_jpa_working_together71?lang=en

REST 不是 API(应用程序编程接口)。它是一种架构风格,规定没有 API 来访问服务的设施。

...

在无状态频谱的另一端是 JEE 应用程序服务器的原则——服务器维护所有事物的状态,并且存在一个(或多个)API 用于所有事物。JEE 的这种以服务器为中心、有状态、面向 API 的原则导致了几个障碍。

...

我发现 REST 原则简洁而优雅。我还发现 Java Persistence API (JPA) 提供者在标准化和合理化经典的对象关系阻抗失配方面做得很好。JPA 经常被误解为仅仅是 JDBC 的替代品——但它比 JDBC 甚至比对象关系映射 (ORM) 还要多。JPA 是一种将关系数据作为对象图查看和更新​​的强大方法。此外,核心 JPA 概念(如分离事务或可定制的闭包或持久身份)似乎与 REST 原则完全一致。

更多链接:

于 2012-05-24T00:33:33.213 回答