日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java dto是什么_java项目中VO和DTO以及Entity,各自是在什么情况下应用的

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java dto是什么_java项目中VO和DTO以及Entity,各自是在什么情况下应用的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

j2ee中,經常提到幾種對象(object),理解他們的含義有助于我們更好的理解面向對象的設計思維。

POJO(plain old java object):普通的java對象,有別于特殊的java對象(含繼承約束等)和EJB。POJO一般只有一系列的屬性和相應的get、set方法。

PO(persistant object):持久化對象,有別于POJO,必須對應數據庫中的實體。一個PO對應數據庫的一條記錄。持久化對象的生命周期與數據庫密切相關,只能存在于connection之中,連接關閉后,PO就消失了。

PO相對于POJO有諸多不同,比如PO中會有保存數據庫entity狀態的屬性和方法。但是ORM(object-relation mapping)追求的目標是PO和POJO的一致,所以在程序員的日常開發中,都是將POJO作為PO使用,而將POJO轉化為PO的功能交給hibernate等框架來實現。

DTO(data transfer object):數據傳輸對象,以前被稱為值對象(VO,value object),作用僅在于在應用程序的各個子系統間傳輸數據,在表現層展示。與POJO對應一個數據庫實體不同,DTO并不對應一個實體,可能僅存儲實體的部分屬性或加入符合傳輸需求的其他的屬性。

DAO(data access object):數據訪問對象。提供訪問數據庫的抽象接口,或者持久化機制,而不暴露數據庫的內部詳細信息。DAO提供從程序調用到持久層的匹配。

BO(business object):業務對象。主要是將業務邏輯封裝為一個對象,該對象可以包含一個或多個其他對象。如,"Principal"(委托人),有"Name","Age"等屬性,同時和"Employee"(雇員)有1對多的關系,這個"Principal"就可以作為一個與業務相關的PO。

實踐小結

按照標準來說:

1、entity里的每一個字段,與數據庫相對應,

2、VO里的每一個字段,是和你前臺頁面相對應,

3、DTO,這是用來轉換從entity到dto,或者從dto到entity的中間的東西。

舉個例子:

你的html頁面上有三個字段,name,pass,age

你的數據庫表里,有兩個字段,name,pass(注意沒有age哦)而你的dto里,就應該有下面三個(因為對應html頁面上三個字段嘛)

private string name;

private string pass;

private string age;

這個時候,你的entity里,就應該有兩個(因為對應數據庫表中的2個字段嘛)

private string name;

private string pass;

到了這里,好了,業務經理讓你做這樣一個業務“年齡大于20的才能存入數據庫”

這個時候,你就要用到vo了

你要先從頁面上拿到VO,然后判斷dto中的age是不是大于20,如果大于20,就把dto中的

name和pass拿出來,放到vo中,然后在把DTO中的name和pass原封不懂的給entity,然后根據

entity的值,在傳入數據庫,這就是他們三個的區別

PS,DTO和entity里面的字段應該是一樣的,DTO只是entity到VO,或者VO到entity的中間過程,如果沒有這個過程,你仍然可以做到增刪改查。

總結

以上是生活随笔為你收集整理的java dto是什么_java项目中VO和DTO以及Entity,各自是在什么情况下应用的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。