English 中文(简体)
如何从复杂的领域模型中模拟和处理DTO的专题介绍?
原标题:How to model and handle presentation DTO s to abstract from complicated domain model?

然而,我正在开发一种应用,需要利用Hibernate与复杂的领域模式合作。 这一应用利用了春天花板,使用介绍层的域名是非常引人注目的,因此,我认为,我应该利用我的服务层和来自我的服务层的多功能,以便这些符合我的看法。 现在请让我假设,我有一个住房租赁实体,其财产不是单纯的垃圾,而是与诸如马克、模型等其他实体组成。

    public class CarLease {
        private Make make;
        Private Model model;
        .
        .
        .
    }

大部分财产都是以这种方式选择的,根据 j格的下降选择,每个财产都将向控制人发放身份证。

现在审议一些标准使用案例:制造、洗衣、展示

您将如何模仿DTO的介绍,以作为展示对象和介绍与服务层之间的交流?

你们是否为每一种情况(威胁、ed、显示)创立了不同的DTO? 如果是这样,你会把该身份资料翻译成实体?

您如何和在何处处理验证问题,DTO/Domain Assembly,你从服务层方法中返回什么? (create, edit, 获得)

正如你可以看到的那样,我现在将我的观点与领域目标分开(我不需要很多困难),但我很难找到任何真正的世界范例和最佳做法。 我需要从上到下的一些结构指导,请记住,如果能够利用你的炉子的话,我将使用春天的MVC。

预先感谢。

最佳回答

对于其价值(在C# .net中发展起来,但希望这些原则仍然有助于你)我界定了我用来在企业和数据层之间交换数据的各类类型(DTO s);我每个领域/实体都有一个以上类型。 这些课程被定义为简单课程。

每一项任务都考虑到具体任务,例如:

  • I have a light-weight type designed to populate list views (lots of "rows" but not many "columns"). I also have a corresponding collection type that holds any number of these.
  • I have a "big" get copy which usually has all the properties of the entity in question - but for only one instance of it. I may have more than one of these depending on the size and complexity of the entity vs the cases of use; and also depending on whether you want to return all the data associated with an instance of the entity straight away, or lazy-load some on later requests.
  • I also usually have separate "save" (new) and "update" types for the entity.

Each type is designed to hold only the information relevant for a given task. For example the "big" will return the date last modified, but I don t expect that in my save and update types because I populate those in the data access layer.

而且,据我所知,这些类型存在于共同的大会之中,因此可以在任何层次之间重新使用,而不仅仅是在企业和数据层之间。

<斯特隆>建筑 适合

这种做法没有任何特殊意义,它有自己的利弊;它们究竟是什么,以及它们如何影响你,取决于许多事情——我猜测你的笑情会有所不同——但多年来肯定对我很有帮助。

人们往往对“关切的分离”产生混淆,这确实是明智的举动;这涉及跨组织,因为它们是在各层(以及服务、部件等)之间交换的,因此,总是在什么地方划线上出现模糊。

我采取的做法是,如果在哪一级之间交换某种信息是合适的,那么这种信息可能适合在任何层次之间交换——因此无法让所有人获得? 如果你刚刚通过信息,也就不必重新提供信息。

在复杂性方面,有两种处理方式:

  1. Use a verbose / human readable naming convention for all; the types so you know what things are; it doesn t matter how many there are - that s what intelli-sense (& docs) are for. The more intuitive the better.
  2. KISS - keep things simple if you can; you ll have to balance sensible reuse and the Single Responsibility Principle (SRP).

www.un.org/Depts/DGACM/index_spanish.htm 您是否创立了一个主要实体复杂财产的DTO?

我发现,出于以下两个原因,我自称是:

  1. There s data I know I need to expose (push), and the design of the DTO is a no-brainer: it s driven by the data I want to expose.
  2. Pull: the consumer know s what it wants, and the DTO is designed to meet those needs.

由于它们都是在共同大会中确定的,没有一个组成部分是“拥有的”,它有助于迫使你从领域角度而不是从构成部分一来思考;这在一定程度上会影响目的地组织的设计(平衡再利用与SRP)。

在这两种情况下,DTO的所作所为可以具体针对特定需要或通用需要;例如,只有直觉和体力的DTO,并不常见,它把你用来寄出退缩名单的那类事情推上。

我寄回的大多数DTO藏书(从DAL到BL)是特定的概念,而不是通用的概念。 我通过我提供的建筑商执行有关这些规则的非常基本的规定:需要每个动力。 我不敢肯定,这是否回答了你的问题“你如何管理集会和鉴定”。

问题回答

您是否认为指挥责任分离原则? 简言之,这是一项建筑原则,倡导使用单独的部件阅读和修改业务。

修改采用送交《域示范公约》的指令进行。 页: 1 看起来像指挥——创建新住房共同体。 这些文件载有特定行动所需的所有数据。

而另一方面,案文(清单或详细数字)则直接放在基本数据储存上(SQL数据库)。 这里有许多可能性,从同一数据储存备份读写部分到通过出版/订阅基础设施连接两个独立的数据库。

当使用后一种(两个商店)办法阅读时,许多(如Udi Dahan)提倡使用所谓的持久性观点。 这意味着直接储存数据,其形式是您的看法。 在模型更新之后同步进行变革(分类)。

如果想更多地了解CLCS,我建议阅读Udi Dahan和Greg Young。

服务层应归还目的地,而不是EJB物体的想法,大多是EJB3/JPA时代的预想。 在团结互助会期间,你与模范物体(a.k.a. 实体)直接合作,取得了许多成果。

然而,在用于优化性能时,如模型目标太大,或当你利用一些智能组合来汇总模型数据时,你可以获益于使用DTO。

因此,除非你根据SOA进行工程,否则我不建议与DTO合作开展CRUD业务。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签