栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在JSF + Spring + Hibernate中使用DTO

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在JSF + Spring + Hibernate中使用DTO

DTO代表数据传输对象。它应该是普通的Javabean类,没有任何API /体系结构特定的限制,例如JSF,JPA或Spring注释。即,它不应包含任何

impor
t指向外部API的FQN。唯一的目标是能够在大型模块化Web应用程序的不同体系结构之间传递数据。

例如,如果你不希望将JPA / Hibernate实体Bean用作JSF托管Bean的模型属性并进行查看,因为由于某些过于严格的业务或模块化原因,它们可能无法传递到EJB类之外,那么你需要创建此类的副本并自己映射松散的属性。基本上:

UserEntity userEntity = em.find(UserEntity.class, id);UserDTO userDTO = new UserDTO();userDTO.setId(userEntity.getId());userDTO.setName(userEntity.getName());// ...return userDTO;

有很多可用的库,可以通过以下方式简化bean到bean的映射:

SomeLibary.map(userEntity, userDTO);

但是,对于一般的Web应用程序,你不需要DTO。你已经在使用JPA实体。你可以继续在JSF Bean /视图中使用它们。

仅此一个问题就已经表明你实际上根本不需要DTO。你不受某些特定业务限制的限制。然后,你不应该搜索设计模式,以便可以将其应用于项目。你应该以过于复杂/无法维护/重复的代码形式搜索实际问题,以便你可以为其寻求/找到合适的设计模式。通常,重构重复代码几乎会自动引入新的设计模式,而无需你真正意识到它。

一个很好的例子是,JPA实体出于特定目的而“太大”(即,该实体包含的属性远远超出你实际需要的属性)。拥有大量那些部分使用的实体会浪费服务器内存。要解决此问题,你可以仅基于你使用JPQL中的构造函数表达式创建和填充的DTO类的某些属性来创建DTO类/子类。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号