Tag: dto

视图层中的DTO或域模型对象?

我知道这可能是一个古老的问题,但是更好的做法是什么? 在整个应用程序的所有层中使用一个领域模型对象,甚至直接将值绑定到JSP上(我使用的是JSF)。 或者将域模型对象转换为DAO或服务层中的DTO,并将轻量级DTO发送到表示层。 我被告知,使用DTO是没有意义的,因为对数据库的更改将导致所有DTO的更改,而在任何地方使用模型对象只需要更改受影响的模型对象。 但是,DTO的易用性和轻便性似乎超过了这一点。 我应该注意到,我的应用程序使用Hibernate模型对象,并使用自己的自定义创build的模型对象(意思是不绑定到任何数据库会话,总是分离)。 上述任何一种情况对于严格的模型对象模式都更有利? 对于Lazy Initialization Exceptions这样的事情来说,使用Hibernate是一个巨大的PITA。 我正在编辑这个问题,希望进一步讨论(不知道我是否正确): 我对模型对象的问题是它们根本不灵活。 下面的评论说应该devise应用程序,以便模型对象可以在所有图层中使用。 为什么? 如果一个用户想要一个荒谬的function,我应该告诉他们,“那么将无法与模型对象? 简单而简单,有时候模型对象不能工作。 你可能有: public class Teacher { List<Student> students; [tons of other Teacher-related fields] } public class Student { double gpa; [tons of other Student-related fields] } 但也许你不需要所有的信息。 你只需要老师的姓氏,他们今年教的学生人数,以及所有学生平均GPA的总和。 你会怎么做呢? 检索完整的教师信息和学生关系,然后你的代码在学生名单上得到一个计数,然后计算所有gpas的总平均数? 这似乎更像是花了更多的努力,而不是简单地创build一个“stringlastName”,“int numStudents”,和“double combinedGpa; 这可能听起来像我的思想已经弥补了这些,但我还没有在一个应用程序中的模型对象可以在任何情况下完全使用干净。 普通的真实世界的应用与普通的用户需求不一样。

将DTO映射到域对象的最佳实践?

我已经看到很多与将DTO映射到域对象有关的问题,但我不觉得他们回答了我的问题。 我以前用过很多方法,有我自己的看法,但是我正在寻找更具体的东西。 情况: 我们有许多域对象。 我们使用CSLA模型,所以我们的域对象可能非常复杂,并且包含他们自己的数据访问。 你不想在电线上传递这些信息。 我们将要编写一些新的服务,以多种格式(.Net,JSON等)返回数据。 为了这个(和其他原因),我们还创build了一个精简的数据传输对象来传递线路。 我的问题是DTO和Domain对象应该如何连接? 我的第一反应是使用Fowler,DTO模式types的解决scheme 。 我已经看过很多次了,这感觉对我来说很合适。 域对象不包含对DTO的引用。 调用外部实体(“映射器”或“汇编器”)以从域对象创buildDTO。 通常在域对象上有一个ORM。 这样做的缺点是,“映射器”往往对于任何实际情况都非常复杂,并且可能非常脆弱。 另一个想法是域对象“包含”DTO,因为它只是一个精益数据对象。 域对象属性将在内部引用DTO属性,如果需要可以返回DTO。 我可以看到没有问题,但感觉不对。 我看过一些使用NHibernate的人似乎使用这种方法的文章。 还有其他的方法吗? 以上方法之一值得使用吗? 如果这样或者没有,为什么? 提前感谢您的任何见解。

DTO = ViewModel?

我使用NHibernate来坚持我的域对象。 为了保持简单,我使用ASP.NET MVC项目作为我的表示层和我的服务层。 我想从我的控制器类返回我的域对象的XML。 在阅读堆栈溢出的一些post后,我收集DTOs是要走的路。 不过,我也遇到过有关ViewModel的post。 我的问题是:数据传输对象和ViewModel是一样的东西? 或者是ViewModel是DTO的一种子模式?

用于java对象到对象映射的任何工具?

我正在尝试使用java将DO转换为DTO,并在开始编写自己的代码之前查找自动化工具。 我只是想知道是否有任何免费的工具可用于相同的。

为什么数据传输对象(DTO)是反模式?

我最近听到有人说数据传输对象 (DTO)是反模式的 。 为什么? 有什么select?

如何快速检查数据传输两个对象在C#中具有相同的属性?

我有这些数据传输对象: public class Report { public int Id { get; set; } public int ProjectId { get; set; } //and so on for many, many properties. } 我不想写 public bool areEqual(Report a, Report b) { if (a.Id != b.Id) return false; if (a.ProjectId != b.ProjectId) return false; //Repeat ad nauseum return true; } 有没有更快的方法来testing只有属性具有相同的值(不需要一行代码或每个属性一个逻辑expression式的对象)? 切换到结构不是一个选项。

REST API – DTO或不?

我目前正在为一个项目创build一个REST-API,并且正在阅读关于最佳实践的文章。 许多人似乎反对DTOs,只是公开领域模型,而其他人似乎认为DTO(或用户模型或任何你想称之为)是不好的做法。 我个人认为这篇文章很有意义。 但是,我也了解DTO的所有额外映射代码的缺陷,可能与它们的DTO对等体完全相同的域模型等等。 我们的API大部分都是为了让其他客户端可以使用数据而创build的,但是如果我们做得正确的话,我们也可以在我们自己的Web GUI上使用它。 问题是我们可能不想将所有域数据公开给其他客户端用户。 大部分数据只会在我们自己的Web应用程序中有意义。 另外,我们可能不希望在所有场景中公开有关对象的所有数据,特别是与其他对象的关系等等。 例如,如果我们公开一个特定对象的列表,我们不一定要公开整个对象的层次; 使对象的孩子不会暴露,但可以通过链接发现(仇恨)。 我应该如何解决这个问题呢? 我正考虑在我们的领域模型上使用Jackson mixins来控制在不同场景下会暴露的数据。 还是应该一直使用DTO – 即使有缺点和争议?

POCO vs DTO

POCO = Plain Old CLR(或更好:Class)对象 DTO =数据传输对象 在这篇文章中有一个区别,但坦率地说,我读的大部分博客都是按照DTO的定义来描述POCO:DTO是用于在应用程序的各个层之间移动数据的简单数据容器。 POCO和DTO是一样的吗? (ps:看这篇关于POCO作为一种生活方式的文章 )

DTO,VO,POJO,JavaBeans之间的区别?

已经看到一些类似的问题: JavaBean和POJO有什么区别? POJO(简单的旧Java对象)和DTO(数据传输对象)之间的区别是什么? 你能不能告诉我他们使用的背景? 还是他们的目的?