山東傳統(tǒng)的DTO-40,粗妥爾油(CTO)是硫酸鹽制法制漿廠的副產(chǎn)品。
合理的DTO設(shè)計將會使得服務(wù)器和客戶端的通信更加順暢。但是合理的DTO設(shè)計仍然會減少返工的可能性。進行拷貝然后作為DTO傳遞。所以了解一個結(jié)構(gòu)就夠了。使得開發(fā)工作變得更快。當域DTO不能滿足要求的時候就需要更加細粒度的DTO方案。目前主流的DTO解決方案有定制DTO、數(shù)據(jù)傳送哈希表、數(shù)據(jù)傳送行集。
就好像對域模型做了同樣的操作一樣。然后將修改后的DTO傳回服務(wù)器端由服務(wù)器對其進行處理。需要注意的就是版本問題。而且客戶端還可以通過將更新后的DTO回傳到服務(wù)器端以更新數(shù)據(jù)??梢钥焖俚貥?gòu)建出一個應(yīng)用。將客戶端和服務(wù)器端域?qū)ο篑詈显谝黄?。即使對于Hibernate這種PO、DTO一體的系統(tǒng)來說也會同樣導(dǎo)致客戶端的代碼要重新編譯或者修改。
PO的狀態(tài)管理可以脫離Session。這是任何人都無法忍受的。而且客戶端的代碼中一旦訪問了沒有在服務(wù)端加載到的屬性就會發(fā)生“Session已關(guān)閉”的異常。那么采用一種更合理的形式把PO傳遞給客戶端就成為一個必須解決的問題。這就是DTO生成器要解決的問題。客戶端可以把DTO當成一個沒有任何副作用的普通JavaBean使用。
允許客戶端將修改后的DTO傳遞回服務(wù)器端進行更新。因為克隆以后的對象仍然是和PO一樣的被代理對象。然后將客戶端需要的PO中的屬性賦值到DTO中。所以我們必須要通過一種機制知道對象的字段有哪些、字段的類型是什么、字段是否是關(guān)聯(lián)對象、關(guān)聯(lián)的類型是什么。下面就分別介紹通過這兩種元數(shù)據(jù)機制實現(xiàn)DTO生成器的方法。指定的屬性的粒度到關(guān)聯(lián)屬性。
可以通過SessionFactory獲取元數(shù)據(jù)接口的實例。通過將持久化對象的類作為參數(shù)調(diào)用SessionFactory的getClassMetadata方法就可以得到關(guān)于此對象的所有元數(shù)據(jù)信息的接口ClassMetadata。下面是ClassMetadata接口的主要方法說明。得到指定屬性的類型。實體是否是版本化的。得到所有屬性的“是否允許為空”屬性。得到所有屬性的“是否LazyLoad”屬性。實體是否有主鍵字段。兩個方法就可以滿足要求了。這個類型包含了字段的元數(shù)據(jù)信息。