环境:
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。但是这种方法并不灵活,需要非常仔细地设计实体类
谁能对此发表评论吗?有没有更好的选择呢?
我强烈推荐使用DTOs级别,这里有几个原因:
>
在某些时候,您的REST表示将不完全匹配到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 地址 如果机器已被