POJO,PO,DTO,VO,BO

 POJO (Plain Old Java Object)

簡單來講就是自動幫你建立private 的get 和 set。

通常實體層都是這樣拉出來的,很快。


PO (persistent object)

因為ORM的存在才有所謂的PO概念,可以簡單的將其視為資料庫Table和Java物件的對映

通常PO名詞跟hibernet有關


ORM (Object Relational Mapping)

物件關聯對映

通常是拿來串接DB和Model兩者之間,是一種更快速且安全的方式去讀取資料庫

ORM的優點

一、安全性

透過ORM可以避免掉SQL注入的攻擊手段

SQL注入就是在比如Email等輸出框中使用Delete或者Updata之類的手段進行破壞

因為使用ORM的話,參數會變成 age = txtNmae.where(age : 30)

二、簡化性

SQL 語法 SELECT * FROM TABLE WHERE (條件) =

TABLE = txtName.where(條件)

三、通用性

兩種資料庫通常會有不同的寫法 如mySql 和 msSql的寫法就不同

因此轉資料庫的時候可能導致語法上的錯誤

但是使用ORM就沒有這種困擾


缺點

一、效能

效能差有兩種原因,一種是因為ORM為了達到更方便的操作,因此寫了很多對於這個專案來說不必要的功能,因此速度自然比純SQL慢一些

不過上述其實是可忽略的慢,而第二種吃效能的原因通常是因為SQL沒有寫好導致,因此也不能算是ORM的問題

二、學習曲線高

ORM必須融合SQL和程式語言兩種語法,導致學習曲線較高

三、複雜查詢維護性低

對於複雜的查詢ORM較力不從心。


簡單來講ORM拿來快速建造CRUD應該是沒問題,更進階的可能就不太行了。

參考:

https://ithelp.ithome.com.tw/articles/10207752


DTO (Data Transfer Object)

傳輸用的物件,從PO提取物件之後,將資料往其他系統或服務丟的時候可以先透過DTO包裝。


VO (Value Object)

用於呈現時的資料包裝,將實體的資料(PO)轉換成抽象適合當前的物件。

可以很簡單一對一PO也可以很複雜一對多PO。


DAO (Data Access Object)

用於ORM將資料從資料庫提取的邏輯物件,主要邏輯為如何提取以及如何包裝成PO


BO (Business Object)

與PO和VO的差別在於,BO包含了複雜的商業邏輯



參考:
https://hackmd.io/@MonsterLee/HJyAdgRBB

留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

DDD With MVC