我正在开发一个简单的网络应用程序,它将域模型公开为RESTful资源。我计划使用JPA2(Hibernate)和SpringMVCREST支持。在将Hibernate实体编码为XML/JSON时,如果实体被分离,它将为惰性子关联抛出LazyLoadingException。如果实体仍然附加到HibernateSession,它几乎会加载整个数据库。我尝试使用DozerCustomFieldMapper来确定该属性是否为未加载的惰性HibernateCollection,然后返回NULL。但如果我们有双向关联,Hibernate会急切地加载多对一端,Dozer将尝试复制属性,这将以无限循
在SOA中,如果一些DTO类具有一些重复的字段。使用组合或继承更好,这样就没有重复,或者只使用一个封装所有字段的DTO类。随着我的DTO类的增长,我看到很多重复的字段名称,Sonar报告令人啼笑皆非。什么是最好的方法(或替代方法)。例如publicclassDocDto{privateLongid;privateStringname;privateStringdocType}publicclassDocReviewDto{privateLongid;privateStringname;privateStringstatus;privateStringcomment;}
验证应该在SpringBootRestAPI中的哪一层。我有一些模型、端点和DTO。我在DTO中添加了一些@NotNull和@Size注释。我在端点中添加了@Valid注释以及@RequestParam注释。但现在我想知道我是否也应该在@Entity类中进行验证?我觉得这将是代码的重复。但我读到一个层永远不应该依赖另一个层。 最佳答案 具有讽刺意味的是,有多少人真正相信验证应该是我们在我们的Controller或它们与业务代码交换的值对象中参与的事情,而在其他任何地方都不应该关注状态验证。我们应该始终努力在任何应用程序的多个阶段执行
我们可以使用这两种方法将数据发送到数据访问层或任何其他来源:方法1:入库方式:publicclassUser{publicstringFirstName{get;set;}publicstringLastName{get;set;}publicintAge{get;set;}}publicclassUserRepository{publicstaticvoidAdd(Useruser){//Adduserlogic}publicstaticvoidDelete(Useruser){//Deleteuserlogic}publicstaticUserGet(intuserid){//Ge
我不想公开我的模型类(jpa实体),而是公开它们具有不同数据传输对象(DTO)的属性的不同子集。这个想法是DTOCrudRepositoryJpaRepositoryentities,我想通过SpringDataREST公开DTOCrudRepository.例子:实体:@Entity@Table(name="groups")publicclassGroup{privateLongid;privateStringname;privateSetusers;//otherattributes@Id@GeneratedValue@Column(name="group_id")publicLo
在我的SpringMVC应用程序中,我在表示层中使用DTO,以便在服务层中封装域模型。DTO被用作spring表单支持对象。因此我的服务看起来像这样:userService.storeUser(NewUserRequestDTOreq);服务层将翻译DTO->域对象并完成其余工作。现在我的问题是,当我想从服务中检索DTO以执行更新或显示时,我似乎找不到更好的方法来执行此操作,然后使用多种方法来查找返回不同的DTO喜欢...EditUserRequestDTOuserService.loadUserForEdit(intid);DisplayUserDTOuserService.load
我正在尝试找出在RestfulWeb服务上下文中使用JPA的最佳方式。输入以JSON形式出现,我可以使用Jackson/JAX-RS将其转换为POJO。这将传递给我需要以某种方式合并到JPA实体中的服务。这些是我迄今为止发现的有利有弊的选择。1。JPA合并()我尝试的第一件事可能是最简单的。GET操作返回可轻松序列化为JSON的JPA实体。在更新时,传回的对象是JSON,可用于填充分离的实体。这可以使用JPAmerge()方法保存到数据库中。优点具有较少代码重复的简单架构(即没有DTO)缺点据我所知,这只有在你传递整个模型时才有效。如果您尝试隐藏某些字段,例如用户实体上的密码,那么合并
我正在尝试将JavaDTO对象映射到现有的JPA实体对象,而无需执行以下操作:publicMyEntitymapToMyEntity(SomeDTOdto,MyEntityentity){entity.setField1(dto.getField1());entity.setField2(dto.getField2());...entity.setField20(dto.getField20());returnentity;}到目前为止,我一直在使用ModelMapper像这样:MyEntityentity=modelMapper.map(dto,SomeDTO.class);,但我想
主要问题是如何在不破坏的情况下将DTO转换为实体并将实体转换为DtoSOLID原则。例如我们有这样的json:{id:1,name:"user",role:"manager"}DTO是:publicclassUserDto{privateLongid;privateStringname;privateStringroleName;}实体是:publicclassUserEntity{privateLongid;privateStringname;privateRolerole}publicclassRoleEntity{privateLongid;privateStringroleNa
我正在编写一个公开RESTful服务的Spring(4.1.7)Web应用程序,并希望使用DTO“资源”对象在Controller和客户端浏览器之间进行通信,而不是公开我的持久性实体。目前应用有以下几层:查看(JSP/JSON)控制者DAO(@Service)DAO(@Repository)我的问题是,我应该在哪里将我的DAO实体映射到DTO资源?我查看了一些使用SpringHATEOAS的示例,它们显示Resource扩展ResourceSupport的对象被映射到Controller.这是最好的方法吗,还是我应该从DAO服务返回资源?我希望将Link元素添加到返回的资源(用于自身和