java hibernate dto_java – 正确使用Entity和DTO在Restful Web服务中...
有很多文章指出使用JPA / hibernate不需要使用DTO
同樣在article由SO成員Bohzo我很少需要閱讀DTO
甚至在articles中反對(duì)暴露實(shí)體聲明當(dāng)實(shí)體沒(méi)有任何行為時(shí)(當(dāng)它們是POJO時(shí))不需要具有DTO,如在貧血域模型中那樣
假設(shè)有一個(gè)Entity類
class Department{
List employees //lazily loaded collection
集合中的每個(gè)對(duì)象都包含另一個(gè)延遲加載的集合
class Employee{
List accounts
有一個(gè)getDepartment()方法
這是一個(gè)寧?kù)o的服務(wù)用來(lái)提供部門(mén)的Json信息.
可能的解決方案是
解決方案1)根據(jù)hibernate文檔打開(kāi)和關(guān)閉每個(gè)請(qǐng)求的hibernate會(huì)話(這是控制器中最重要的方法是事務(wù)性的?)或更好的使用Spring的OpenSessionInViewFilter,根據(jù)這個(gè)SO post
為什么不能重新打開(kāi)會(huì)話并獲取延遲加載的對(duì)象而不是拋出異常?有沒(méi)有辦法用JPA / hibernate配置它?
解決方案2)同樣在hibernate doc中,另一種方法是進(jìn)行匯編階段.它究竟意味著什么?
將getDepartment API分解為DAO的不同API?
解決方案3)使用DTO即使使用DTO,持久層如何知道視圖是否需要完全加載的部門(mén).
導(dǎo)致將API分解為getDepartmentOnly()getDepartmentWithEmployees()和其他人說(shuō)是否獲得100%的部門(mén)對(duì)象或部分對(duì)象
一個(gè)API分解為許多映射到許多DTO的實(shí)體
解決方案4)正如bohzo的文章中的分頁(yè)視圖一樣,避免了延遲加載并且有查詢來(lái)獲取有限的結(jié)果
請(qǐng)更正解決方案2并解釋hibernate文檔中的內(nèi)容?
總結(jié)
以上是生活随笔為你收集整理的java hibernate dto_java – 正确使用Entity和DTO在Restful Web服务中...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2022 ChinaJoy线下展延期:8
- 下一篇: 跟进抖音 快手最严新规:禁止未成年人直播