Java開(kāi)發(fā)中POJO和DAO的思考

開(kāi)發(fā)中POJO是DO, DTO和VO等的統(tǒng)稱。

DO是data object的縮寫,是數(shù)據(jù)對(duì)象的意思,一般和數(shù)據(jù)庫(kù)中的表相對(duì)應(yīng)。會(huì)放在domain包中。如果使用jpa開(kāi)發(fā),則DO的屬性會(huì)被@Id, @Column, @OneToMany, @OneToOne, @ManyToMany和@mappBy等注解修飾來(lái)建立數(shù)據(jù)對(duì)象跟數(shù)據(jù)庫(kù)表之間的映射關(guān)系,以及表之間的關(guān)聯(lián)關(guān)系。如果使用mybatis開(kāi)發(fā),則不需要注解修飾,只需要簡(jiǎn)單的Java對(duì)象就可以。

DAO是data access object的縮寫,是數(shù)據(jù)訪問(wèn)對(duì)象的意思。如果使用jpa開(kāi)發(fā),可以放在repository或者dao包中,并且是接口的形式,只需要繼承jpa提供的repository接口,并添加自定義方法即可,jpa提供了用curd的curdrepository和pagerepository等接口,用于簡(jiǎn)化常用操作。如果使用mybatis開(kāi)發(fā),一般放在mapper包中,同樣是接口形式,接口使用@Select, @Update, @Insert, @Delete等注解修飾,在注解中手寫SQL完成增刪改查等常用操作。

DTO是data transfer object的縮寫,意思是數(shù)據(jù)傳輸對(duì)象,會(huì)放在dto包中,用在service層,service層一般會(huì)調(diào)用DAO中定義的方法獲取DO對(duì)象,完成業(yè)務(wù)邏輯后,如果需要返回對(duì)象時(shí),會(huì)把對(duì)象組合或者轉(zhuǎn)化為DTO對(duì)象向外傳輸。轉(zhuǎn)化過(guò)程一般使用spring提供的BeanUtils類的copyproperties方法把DO對(duì)象的屬性復(fù)制到DTO對(duì)象里。

VO是view object的縮寫,意思是視圖對(duì)象,用于展示數(shù)據(jù)給用戶,用在controller層,是controller向外傳輸?shù)膶?duì)象,controller中一般會(huì)調(diào)用service層中類的方法獲取DTO對(duì)象,然后轉(zhuǎn)化為VO對(duì)象返回給調(diào)用端。

DO到DTO,再到VO的轉(zhuǎn)化,一方面是為了把數(shù)據(jù)返回給調(diào)用端,另一方面是為了安全,不把敏感信息返回給調(diào)用端。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容