为什么我们应该在具有相同内容时将域(DTO)与实体类分开? 我知道我们将DTO用于Hibernate的UI和实体,但我们可以在DTO中实现Annotations吗?
答案 0 :(得分:1)
你真的不必为它创建DTO。我的建议是当你必须改变实体以便以不同于客户预期的方式显示实体时,引入DTO。
http://www.adam-bien.com/roller/abien/entry/how_evil_are_actually_data
答案 1 :(得分:1)
实施DTO并不一定非常痛苦。看看Blaze-Persistence Entity Views,了解这样做的原因以及如何避免大部分的痛苦。简而言之,使用DTO的最常见原因是
答案 2 :(得分:0)
如果你直接使用实体,你可能会遇到各种问题,你可以通过引入一个单独的层来解决(虽然我不会将它们命名为DTO):
UI,Domain Logik和数据库的要求可能(并且在每个非平凡的项目中)都有所不同:可能您希望将内容存储在Blob中,但希望将其作为域中的对象结构。也许你需要UI的“isChanged”字段,你不需要存储在数据库中,因为它总是假的等等。
至少当你的实体被附加到一个会话时,每个更改都被安排在数据库中持久化,这可能很好,如果它是你想要的,但是当你只想要它时它也会很烦人存储部分变更。
说:它增加了额外的代码,如果你没有这些或类似的问题,没有DTO就没有任何内在错误。