我在SpringRest。参加了Spring Data Hibernate课程,发现它使REST API成为最耗时的方式。
当我向域中添加一个新实体时,我经历了以下对象链:
我的行动大致如下:
正如你所看到的,一系列的动作和大量的物体。
但后来我发现,如果您使用Spring Data REST,这一切都不需要Spring从盒子中提供的所有API。一般来说,您只需要创建一个实体和存储库。
事实证明,对于典型的CRUD类型的操作,我编写了很多控制器及其方法,但都是徒劳的。
问题:
我对如何前进有点困惑。请给出你的建议和想法。推动使用什么以及如何使用。
这是一个有趣的问题。
Spring Data Rest提供了抽象,并将大部分实现掌握在手中。这对于业务逻辑位于存储库层的小型应用程序很有帮助。对于具有简单直接业务逻辑的应用程序,我会选择此选项。
然而,如果我需要在您提到的每一层进行细粒度的控制(例如:事务、AOP、单元测试、复杂的业务决策等),这是大型应用程序最经常需要的,我更愿意编写每一层。
没有经验法则。
Spring Data REST可以为您做的是将普通存储库搭建为rest服务。它要快得多,理论上它应该是灵活的,但实际上很难实现比REST访问您的存储库更多的东西。
在生产中,我使用Spring Data REST作为数据库的包装器——在服务/微服务体系结构模型中,为了实现与数据库无关的应用程序,有时只需将核心数据库包装到这样的层中。然后服务将在这个包装器上应用业务逻辑,并为前端提供API。另一方面,如果您计划只使用这些生成的endpoint,Spring Data Rest(SDR)则不适合,因为您需要自定义将数据和数据操作提取到Repoitories/Services中的逻辑。您可以将两者结合起来,并对“简单”实体使用SDR,其中您只需要对它们进行基本的CRUD,对于复杂实体,您可以使用标准方法,将实体与内点解耦,并将自定义业务逻辑应用到服务中。混合使用这两种策略的缺点是,你的应用程序会不一致,一些“事情”会在开箱即用的情况下发生,这对这个项目的新开发人员来说是非常混乱的。
自己编写这些类可能会浪费时间和精力,但这只是因为你的应用程序还没有复杂的数据库和/或业务逻辑。
简而言之,“标准”方式提供了更大的灵活性,但代价是在开始时编写重复代码。
您有更多的控制权自行构建完整的堆栈,您使用DTO而不是返回实体对象,您可以组合服务中的存储库,您可以将业务逻辑放在服务层上。如果您没有做上述任何事情(您预计在不久的将来不会这样做),则无需再次编写所有样板文件,这就是Spring Data REST发挥作用的时候。
本文向大家介绍php文件上传的两种实现方法,包括了php文件上传的两种实现方法的使用技巧和注意事项,需要的朋友参考一下 文件上传一般有下面2种方式: 有两种: 1、标准input表单方式,典型的用$_FILES进行接收; 2、以Base64的方式进行传送,一般是AJAX异步上传。 第一种 标准的input表单方式,适用于大文件进行上传,同时支持批量。html代码关键的几句: 不同的name时: 其
本文向大家介绍js实现抽奖的两种方法,包括了js实现抽奖的两种方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现抽奖的具体代码,供大家参考,具体内容如下 抽奖活动的原理还是很简单的,通过代码一目了然,如果看不懂就私聊我,可以私下交流! 方法一:使用table写一个随机抽奖 这是html+js代码 方法二:使用span标签写 html+js代码如下 两个页面的css代码 以上
如何使用SpringBoot和SpringSecurity将基本授权(登录密码)与其他服务(google、github、facebook)的授权结合起来?有很多信息,我不知道如何正确解决这个问题。我将非常感谢教程或链接到材料。
本文向大家介绍Android实现静默安装的两种方法,包括了Android实现静默安装的两种方法的使用技巧和注意事项,需要的朋友参考一下 前言 一般情况下,Android系统安装apk会出现一个安装界面,用户可以点击确定或者取消来进行apk的安装。 但在实际的项目需求中,有一种需求,就是希望apk在后台安装(不出现安装界面的提示),这种安装方式称为静默安装。下面这篇文章就给大家介绍了两种方法来实现,
本文向大家介绍Numpy数组转置的两种实现方法,包括了Numpy数组转置的两种实现方法的使用技巧和注意事项,需要的朋友参考一下 Numpy数组转置很容易,两种写法 但是一维数组转置的时候有个坑,光transpose没有用,需要指定shape参数 输出结果为 可见原本一维数组的shape第二的纬度那个1是空的,指定了以后才能顺利地讲行向量转为列向量 以上这篇Numpy数组转置的两种实现方法就是小编分
本文向大家介绍Javascript中实现trim()函数的两种方法,包括了Javascript中实现trim()函数的两种方法的使用技巧和注意事项,需要的朋友参考一下 在JavaScript中我们需要用到trim的地方很多,但是JavaScript又没有独立的trim函数或者方法可以使用,所以我们需要自己写个trim函数来实现我们的目的。 方案一: 以原型方式调用,即obj.trim()形式,此方