「持久」的意思是把數據「固態化」到硬碟上的一個過程,一般實現數據持久化的方法可以是檔案IO,可以是JDBC對資料庫的操作。而所謂的「持久層」意思是把數據儲存的相關操作從原本的架構中解耦(解耦的意思是降低事務之間的關聯性)抽離出來,獨立成一個處理持久邏輯的層。類似底下這張架構圖。

圖片1EEE

邏輯層的操作不會直接到數據層去做CURD而是透過持久層去操作,這樣的架構的好處是一方面可以統一對資料庫的存取,二方面可以避免邏輯層對數據的過度干預。

持久層的主流解決方案

1.JDBC搭配DAO/DTO

2.JDO(Java Data Object)

3.ORM:相關框架有Hibernate

資料傳輸物件 DTO(data transfer object)

也稱作value object

定義:

引述自Martin Folwer的Patterns of Enterprise Application Architecture
An object that carries data between processes in order to reduce the number of method calls.

優點:

1.減少參數傳遞的混亂,增加可讀性
2.方便修改參數傳遞之後的維護
3.封裝資訊,將必要傳遞但不希望被操作的資料封裝起來
4.擴充性,如果將來這組要傳遞的資料需要增加其他欄位或條件,只需要增加物件的屬性就可以完成整體的擴充

設計模式:

可以用解釋器模式+設定檔+裝飾模式構造DTO的資料結構,然後透過設定檔生成統一的DTO物件提供資料傳輸