乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      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)用.

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

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

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

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

      最后,我不確定這是否明智,但我懷疑我的驗證規(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)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多