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將資料從資料庫提取的邏輯物件,主要邏輯為如何...