小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

java – 用于實現(xiàn)大型應(yīng)用的DTO / ViewModels的Spring MVC最佳實踐?

 印度阿三17 2019-06-29

假設(shè)我們有一個包含Spring 3.2.4,Hibernate 3.6.10等超過100個實體的大型Web項目.此項目中的大多數(shù)控制器都將基于REST,并將通過JavaScript調(diào)用.

雖然我認為在概念上簡單地將實體直接編組/取消編組視圖更容易,但事實證明,在使用Jackson時,這在實踐中非常糟糕.雖然@JsonIgnore可用于避免無限復(fù)發(fā),但有時候這種“一刀切”的注釋并不適用于整個應(yīng)用程序 – 我有時需要一把手術(shù)刀,并且很多時候可以查看一個對象在許多方面.

此外,盡管使用Hibernate模塊為Jackson解決了使用Hibernate時的問題,但在使用Spring MVC測試框架時仍然會遇到一些javaassist延遲初始化問題.

通過簡單地使用ViewModels或DTO可以避免所有上述問題,因此這是我傾向于的方向.不幸的是,創(chuàng)建和維護100多個DTO以及映射到和來的代碼是一項相當大的投資.

我也猜測我將不得不為每個DTO編寫自定義JsonDeserializer類,這也是相當多的編碼和測試.

最后,我不確定這是否明智,但我懷疑我的驗證規(guī)則將從我的實體移到我的視圖模型上.我可能永遠不會真正需要驗證我的實際實體,但這種方法讓我感到緊張.

有人可以強調(diào)一下在這樣一個項目中實施和映射DTO的一些最佳實踐,并且還提供一些有關(guān)處理Deserializion的最佳方法的見解嗎?我正在尋找能夠輕松維護代碼的實踐,并且希望不會耗費大量手動,耗時的工作. Martin Fowler的匯編方法對我來說有點多.謝謝!

解決方法:

通常,至少在較大的應(yīng)用程序中是我的經(jīng)驗,我們在屏幕上顯示的內(nèi)容與實際的業(yè)務(wù)組件不同(模型方面).你基本上想要的是一個不同的閱讀和寫作領(lǐng)域(CQRS可能是一種方式).

It is not possible to create an optimal solution for searching, reporting, and processing transactions utilizing a single model (Greg Young)

過去對我有用的是,為那些不同的屏幕/模型創(chuàng)建數(shù)據(jù)庫視圖,并在這些視圖上簡單地實現(xiàn)另一個hibernate實體(只讀).確保您可以將原始業(yè)務(wù)實體與您要調(diào)用的實際業(yè)務(wù)邏輯相關(guān)聯(lián).

如果這也有點多,你可能想看看Dozer,它可以幫助你映射/到對象.這樣您就可以在Java中維護轉(zhuǎn)換邏輯,而不必自己編寫所有映射邏輯(您仍需要配置它,但這可能不那么痛苦).

鏈接

> CQRS
> CQRS文件pdf
> Dozer

來源:https://www./content-1-279801.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多