当前位置: 首页 > 知识库问答 >
问题:

Spring REST Hibernate应用程序设计

凌昕
2023-03-14

环境:

Spring4座

Spring MVC

Spring REST web服务将为客户机公开API,客户机将在UI(ASP.NET)上显示它。响应是在JSON中发送的。

请考虑以下方案:

客户端调用REST api以获取具有ID的用户。dao层获取用户实体并传送给客户端。

考虑到上图,通过Spring REST将用户对象(或响应)发送到客户端的最佳设计方法是什么?

>

  • 创建模仿实体对象的对象(如DTO)的中间层。根据要求将此DTO填充到服务层中。由于服务层在事务内部运行,将解决问题1。但这需要在实体和DTO之间进行额外的复制

    在Hibernate实体/查询级别处理问题1/2(连接、提取、查询或修改映射),并通过注释排除响应中不需要的属性,如@JSONIGNORE。但是这种方法并不灵活,需要非常仔细地设计实体类

    谁能对此发表评论吗?有没有更好的选择呢?

  • 共有1个答案

    夹谷阳夏
    2023-03-14

    我强烈推荐使用DTOs级别,这里有几个原因:

    >

  • 在某些时候,您的REST表示将不完全匹配到DAO实体。这里举几个例子:

    • 您需要返回移动版应用程序的轻量级用户信息(仅包括用户名和姓氏)的完整列表
    • 您希望提供从DAO加载的用户信息+一些从单独服务检索的支付帐户信息。
    • 您希望将来自两个单独DAO实体的信息组合到一个服务调用中

    使用某些第三方库(EhCache、Hazelcast等)缓存数据,或者使用简单的Map(类似于结构自定义的Hibernate实体序列化)对具有复杂关系的实体来说可能是一个大麻烦。

    通过DTO级别,您可以将服务接口/DTO作为接口/客户端库,以便与其他组件集成。并且您仍然可以安全地修改/完全重新设计DAO层实现,例如,即使不切换到SQL解决方案。

    作为结论--在REST API中使用Hibernate实体对于简单的“Hello World”(如应用程序)很好,而对于大多数实际生活中的解决方案则不起作用。

  •  类似资料:
    • 设置应用程序 Nest is built with features from both ES6 and ES7 (decorators, async / await). It means, that the easiest way to start adventure with it is to use Babel or TypeScript. In this tutorial I will u

    • 问题内容: 如何为手机创建J2ME应用程序,其GUI与您在Java游戏中看到的菜单类似?我已经尝试过使用Netbeans的MIDlet,但是它们一次只显示一个GUI元素。 (文本框,选择项,登录名等) 您通常在哪个Java IDE中设计这些GUI?Netbeans还是Eclipse?IntelliJ IDEA也可用于此吗? 我是否必须编写/获取一个库,该库通过位图函数将GUI控件绘制到屏幕上,并保

    • 【注意】Azure SQL Database 不支持应用程序角色。下列选项和选项卡会根据服务器版本而有所不同。 常规属性 角色名 定义应用程序角色的名。 默认模式 选择将拥有此应用程序角色创建之对象的默认模式。 密码 指定应用程序角色的密码。 确认密码 重新输入密码。 拥有的模式 在列表里,勾选应用程序角色拥有的模式。 数据库权限 在网格中,勾选“权限”列出的数据库权限,勾选“授予”、“含授予选项

    • 【注意】Azure SQL Database 不支持应用程序角色。下列选项和选项卡会根据服务器版本而有所不同。 常规属性 角色名 定义应用程序角色的名。 密码 指定应用程序角色的密码。 确认密码 重新输入密码。 默认模式 选择将拥有此应用程序角色创建之对象的默认模式。 拥有的模式 在列表里,勾选应用程序角色拥有的模式。 数据库权限 在网格中,勾选“权限”列出的数据库权限,勾选“授予”、“授予选项”

    • 【注意】Azure SQL Database 不支持应用程序角色。下列选项和选项卡会根据服务器版本而有所不同。 常规属性 角色名 定义应用程序角色的名。 默认模式 选择将拥有此应用程序角色创建之对象的默认模式。 密码 指定应用程序角色的密码。 确认密码 重新输入密码。 拥有的模式 在列表里,勾选应用程序角色拥有的模式。 数据库权限 在网格中,勾选“权限”列出的数据库权限,勾选“授予”、“含授予选项

    • 你可以查看或更改 Navicat Monitor 的应用程序设置,例如端口、网站网址和 IP 地址。若要配置应用程序设置,请前往“配置”->“应用程序设置”。 这里列出了 Navicat Monitor 的应用程序设置。你可以编辑以下设置: 端口 Navicat Monitor 将侦听的端口号。 网站网址 将用于警报电子邮件内的 Navicat Monitor 网站网址。 IP 地址 如果机器已被