Spring Data REST与Spring Data JPA的区别

21

我已经查看了以下问题:

使用Spring Data REST而不是Spring Data JPA有哪些优势?

它并不能完全满足我的需求。我的数据库使用MYSQL,我选择了Spring-Data-JPA实现。REST可以给我带来什么额外的优势,这些优势在简单的Spring-Data-JPA中找不到呢?例如,如果明天我决定在业务和数据库模块之间实现缓存,这种情况下我需要编写更少的代码吗?哪种方法更易于配置?哪种方法更灵活?

此外,如果我在新应用程序中同时使用REST和JPA,我会破坏哪些设计原则呢?

我期待从架构的角度得到答案。提前感谢您。

2个回答

68
基本上,我认为你的问题并不完全切合要点。我认为你还没有完全找到自己在Spring项目中的方向-所以我在这里试着给予一些指导。
Spring-data-jpa是使用JPA访问数据的Spring方式。您可以在spring-data-jpa之上使用spring-data-rest来创建一个REST-API层,无需在存储库和实体之上编写代码。
而spring-data-rest能为您做的事情真是令人惊叹。它是在JPA层之上创建REST API的最快方法。而且它也高度可定制。但我认为它也有局限性。最显著的弱点是实体和API之间的紧密耦合。通常,您希望在这些层之间有一定程度的解耦。但它是一款非常棒的软件。如果您需要快速并且想编写最少量的代码,请选择spring data rest。
使用spring MVC直接创建自己的REST API是spring-data-rest的替代品。Spring-data-jpa仍然用于实现数据访问层。Spring MVC非常强大,并且被spring-data-rest作为底层使用。这使您完全控制了REST层。

我还想提一下spring HATEOAS - 它只是在spring mvc之上的一个模块,它提供了创建超媒体驱动的REST API的工具 - 这样你就可以达到Richardson Maturity Model的第三个成熟度级别 - 它也被spring-data-rest内部使用。


感谢Mathias提供的成熟度模型,我之前从未听说过。 不过我还想了解一下它是如何紧密耦合的,以及Spring Data JPA是如何更松散耦合的。如果您能提供具体的例子,那就更好了。 - Dipanshu Verma
2
这里有一个非常好的示例应用程序 https://github.com/olivergierke/spring-restbucks 它包含了spring-data-rest的示例,但也包含自定义控制器。 - Mathias Dpunkt
3
谢谢你的反馈!感谢提到了API和数据库之间紧密耦合的缺点,并提到了Spring HATEOAS。 - java-addict301

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接