假设我是关于DTO的新手。我不知道将DTO与JSF,Spring和Hibernate一起使用是否正确。
让我解释一下,到目前为止,我已经在业务层和表示层中使用了直接从数据库创建的实体bean。现在,我决定尝试使用DTO方法,但是我不明白它们如何提供帮助。
例如,如果我有两个类User和Message,而一个html" target="_blank">用户有更多关联的消息;如何从数据库填充DTO?还是在业务层手动填充DTO?有人可以发布有关如何使用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类/子类。
问题内容: 我正在使用框架JSF 2.1,Spring 3.1.1.Release,Hibernate 3.2.1进行Java EE项目。现在我正处于整合这三个方面的阶段。构建成功,我使用了tomcat服务器7。但是我在首页上看到了这个异常。 hibernatehibernate.cfg.xml hibernate.reveng.xml AnneeDao.java AnneeHibernateDa
问题内容: 我想使用Spring Security Facelets标记库来保护我的JSF 2页面中的UI组件 我对Spring Security版本3.0.5具有以下依赖性: 我配置了applicationSecurity.xml以进行Spring安全性登录,并且它可以与UserDetailsService一起正常工作,并且在尝试添加安全性定义时: 当运行该应用程序时,出现以下错误: 问题答
我正在使用JSF 2.1Hibernate4.1.7Spring3.2.1Spring安全SQLServer2012的Web应用程序工作。一切正常,即CRUD操作。但有些方法需要处理 2 个或更多实体(更新、添加等),例如 如果在执行第2行(创建实体)时出现错误,我需要合并的实体(或更新、创建)或之前的DB函数来获得回滚,以便我的DB上的数据保持正确 我将与Spring注释结合使用。 在我的< c
问题内容: 我想在我的JSF Web项目上实现Ajax。我搜索了一下,发现ICEFaces正在通过JSF支持Ajax。但是我不知道它的可用性。 任何人都有Ajax / JSF的经验,请指导我搬到哪里。 [编辑] 如果有人有类似经验,请也分享可用性。好与坏.. 问题答案: JSF 2.0使用f:ajax标记内置了对Ajax的支持。ICEFaces,OpenFaces和RichFaces的所有三个都还
问题内容: 搜索了几个小时,但我陷入了使用JPA的PlayFramework学习的困境。我正在建立一个示例网站,可以在其中发布帖子。但是这些帖子可以具有以下状态: PostDraft(帖子是草稿,不发布) PostPublished(帖子可以发布) 这些状态存储在单独的表中。显然,州立草稿 尚不可见。 所以我有这些课: 页面类(从表中获取页面信息,一个页面可以有多个帖子) 帖子类(帖子可以在草稿中
问题内容: 我创建了一个具有持久性上下文(hibernate为提供程序)的非常简单的应用程序,以从数据库中读取一些值。我在Maven中使用Eclipse。 首先,我得到 并根据此主题 http://openejb.979440.n4.nabble.com/problem-with-hibernate- persistence-provider- td980429.html 我排除了hibernat