常见的要求是通过REST访问JPA DataSource。我想要相反的,即通过向RESTful持久性服务发送HTTP请求来工作的JPA提供程序。这样做的好处是,针对JPA API编写的任何应用程序都可以轻松地在传统的JPA提供程序(例如Hibernate)和基于REST的JPA提供程序之间切换,而无需更改代码。
所以我的问题是,是否存在基于REST的JPA提供程序,如果没有,这样的事情是否可行?
答案 0 :(得分: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的用途。
答案 1 :(得分:1)
Datanucleaus在RESTful json API上有一个JPA实现。但是,您的REST API必须遵守其约定:http://www.datanucleus.org/products/accessplatform_3_0/json/support.html
他们的S3和GoogleStorage扩展了json API。
编辑:在我的原始答案中输入错误产品的链接。
答案 2 :(得分:0)
有几种选择。例如,看看“JEST”:
REST不是API(应用程序编程接口)。它是一个 建筑风格,规定没有API访问 服务设施。
...
无状态频谱的另一端是原则 JEE应用程序服务器 - 服务器维护状态 一切都存在一个(或多个)API。这样 以服务器为中心,有状态,面向API的JEE原则导致 几个障碍。
...
我发现REST原则简洁而优雅。我也找到了Java Persistence API(JPA)提供程序在标准化方面做得很好 并合理化经典的物体 - 关系阻抗不匹配。 JPA经常被误解为仅仅是JDBC的替代品 - 但确实如此 不仅仅是JDBC,甚至不仅仅是对象关系映射 (ORM)。 JPA是一种查看和更新关系数据的有力方法 对象图。也是核心JPA概念,如分离交易或 可定制的闭包或持久的身份似乎整齐 与REST原则保持一致。
更多链接: