比方說,我們有一個大型的Web項目,使用Spring 3.2.4,Hibernate 3.6.10等超過100個實體。此項目中的大多數控制器都是基於REST的,並將通過JavaScript調用。實現DTO/ViewModels for Large應用程序的Spring MVC最佳實踐?
雖然我認爲從概念上來說簡單地將編組/實體直接編組到視圖中會更簡單,但實際上這在使用Jackson時非常糟糕。儘管可以使用@JsonIgnore來避免無限循環,但有時候這種「一刀切」的註釋對整個應用程序來說並不適用 - 有時候我需要一個解剖刀,而且很多時候可以查看一個對象在許多方面。
另外,儘管使用Hibernate模塊爲Jackson解決了使用Hibernate時遇到的問題,但仍然會遇到一些使用Spring MVC測試框架時的初始化問題javaassist
。
所有這些上述問題都可以通過簡單地使用ViewModels
或DTOs
來避免,所以這就是我所傾向的方向。不幸的是,創建和維護超過100個DTO以及映射到和來自的代碼是相當的投資。
我也猜測我必須爲這些DTO中的每一個編寫自定義的JsonDeserializer
類,這也是相當多的編碼和測試。
最後,我不確定這是否明智,但我懷疑我的驗證規則將從我的實體移到我的視圖模型上。我可能永遠不會真的需要驗證我的實際實體,但這種方法讓我感到緊張。
有人可以強調一些在這樣的項目中實施和映射DTOs的最佳實踐,並且也提供一些關於交付Deserializion的最佳方式的見解嗎?我正在尋找能夠輕鬆維護代碼的實踐,並希望不會耗費大量人力和時間。 Martin Fowler的彙編程序對我來說有點多。謝謝!
甲CQRS爲Java:[Qi4j](http://qi4j.org/) – nobeh