0%

JAVA搞不清楚系列 - POJO, PO, DTO, DAO, BO, VO

大二之後再也沒碰過Java,許多觀念也都已經忘光光
開始工作後這些東西通通回來找我了
如此看來還有許多我搞不清楚的東西呢
這篇記錄了一些在Java專案中必須知道的基本知識
(但是我之前真的不知道QQ)

POJO (Plain Old Java Object)

POJO就是一個Java物件只包含自己的屬性(private)和提取或儲存這些屬性的method(get、set),而其他的Object也是以POJO為基準開始延伸。

PO (Persistent Object) = Entity

資料庫的table所對應的java物件,通常與使用hibernate相關。除了get, set沒有其他方法

Spring Boot JAP有一個套件叫做Lombok,可以替我們省去寫getter and setter的功夫,只需要加上Annotation @Getter @Setter 即可
可參考:https://ithelp.ithome.com.tw/articles/10238653

DTO (Data Transfer Object)

用來傳輸的物件,只會把需要被傳輸出去的資料包裝起來

DAO (Data Access Object)

用於ORM將資料從資料庫中提取的邏輯物件,主要包含提取資料庫的資料並包裝成PO(就是跟SQL有關的邏輯都會在這,像是查詢或是新增資料等)

BO (Business Object)

跟業務相關的邏輯,為PO的組合

VO (Value Object)

可省略只用DTO

資料包裝,對應資料庫的屬性或是包含多個PO組成一個較複雜的資料物件-> 簡單來說就是展示用的資料
如在DTO中定義為:

1
2
3
4
{
"gender" : "female",
"age" : 20
}

而年紀不須完整的被展現出來,只需展示出一個範圍,則VO會定義成:
1
2
3
4
{
"gender" : "female",
"age" : "18~25"
}

用一張圖來解釋的話就是這樣:

Reference:

  1. https://medium.com/@charle0911/%E4%B8%80%E6%AC%A1%E6%90%9E%E6%87%82java-pojo-po-dto-vo-bo-59fce7a0eda9
  2. https://zhuanlan.zhihu.com/p/35762537
  3. https://zhuanlan.zhihu.com/p/102389552