2017-09-26 80 views
2

我知道將實體類和屬性複製到DTO中被認爲是反模式,因此通過Exposed domain model模式可以將相同的@Entity同時用作數據庫實體類和服務和MVC的DTO層。 (參見這裏https://codereview.stackexchange.com/questions/93511/data-transfer-objects-vs-entities-in-java-rest-server-application在Java微服務體系結構中公開的域模型

但是假設我們有微服務體系結構,其中一個項目中的同一組屬性用作持久性的項目中的實體,而另一個項目中的DTO使用第一個項目作爲服務。在這種情況下建議的模式是什麼? 由於第二個項目不需要@Entity相關功能,並且如果我們將該類放入共享庫中,它將不必要地綁定到JPA特定的API和庫。另一種方法是再次使用單獨的DTO類反模式。

回答

0

有時設計模式可能是反模式。我回顧了很多關於這個話題的文章,我仍然不能決定「單獨的DTO類反模式」是否真的是反模式。因爲根據你的第二個項目的答案,暴露域模型看起來像反模式。有些人說,由於某種原因分離Dto和實體。有人說這取決於你的項目。還行吧。這取決於我們的項目。但我們無法預測我們的項目。也許暴露的領域模型對於我們現在的項目來說是最好的選擇,但是將來也許不是。

因此,我通常使用Spring框架,我更喜歡使用JdbcTemplete。使用JdbcTemplate,您可以使用RowMapper映射模型類。所以我可以使用這個模型類作爲DTO和實體,而不必與JPA綁定。這樣你就必須編寫更多的低級代碼,但它提供了更多的靈活性。

相關問題