使用Java實現資料庫編程—08 DAO 模式

來源:互聯網
上載者:User

標籤:編程   串連數   word   資料庫名   width   添加   body   acl   java實現   

1、        資料持久化:將程式中的資料在瞬時狀態和持久狀態間轉換的機制即為資料持久化;

2、        持久化的實現方式:資料庫、普通檔案、XML檔案;

3、        JDBC封裝:採用面向介面編程,可以降低代碼間的耦合性;

為了提高代碼的維護性和擴充性,我們使用JDBC進行封裝資料,:

先定義統一的API,將操作資料的代碼抽象到介面中,商務邏輯代碼只需要調用這些介面的實作類別的對象,就可以實現對資料的訪問了,

從而隔離實現的細節,採用面向介面編程,可以降低代碼間的耦合度,提高代碼的擴充性和維護性。

優點:

  • 隔離商務邏輯代碼和資料存取碼

隔離不同資料庫的實現

●進行封裝的原因:業務代碼和資料存取碼耦合:可讀性差、不利於後期修改和維護、不利於代碼複用;

4、DAO:作用:DAO起著轉換器的作用,把實體類轉換為資料庫中的記錄;

DAO模式總結:

  DAO(data  access  Objects) 資料存取對象,位於商務邏輯和持久化之間,實現對持久化資料的訪問,

通俗的講,就是將資料操作封裝起來,對外提供相應的介面

在物件導向設計過程中,有一些套路使用者解決問題,稱為模式,

DAO模式提供了訪問關係型資料系統所需操作的介面,將資料訪問和商務邏輯分開,對上層提供物件導向的資料提供者,

從DAO模式可以看出,它實現了兩層分離。

隔離了資料存取碼和商務邏輯代碼,商務邏輯代碼直接調用DAO方法即可,完全感覺不到資料表的存在,分工明確,資料訪問層代碼不影響商務邏輯層代碼,這也符合單一職能原則,降低了耦合度,提高了代碼的可複用性。。

隔離了不同的資料庫的實現,採用面向介面編程,如果底層資料變化了,如mysql變成了oracle。中需要增加DAO介面的實作類別即可,原來的Mysql實作類別不用修改,這符合開閉原則,降低耦合性,提高擴充性和移植性

一個典型的DAO模式主要由以下幾部分組成。

  DAO介面:把對資料庫的所有操作定義為抽象方法,放在介面裡面,可以提供多種實現

  DAO實作類別:針對不同的資料庫給出不同的DAO介面定義的方法的實現(不同的實作類別)

  實體類:用於存放傳送的對象資料,就直接傳遞對象就行了,不用傳遞很多參數

  資料庫連接關閉工具類:還有一些比如增,刪,改的複用代碼可以提取到公用類中,還有關閉和串連資料庫,避免代碼冗餘。。。

非常流行的資料訪問模式——DAO模式

  Data Access Object(資料存取對象)

  位於商務邏輯和持久化資料之間

  實現對持久化資料的訪問

DAO模式的組成部分

  DAO介面

  DAO實作類別

  實體類

  資料庫連接和關閉工具類

4、        properties設定檔:讓使用者脫離程式本身修改相關的變數設定——使用設定檔;

Prpoerties類:可以讀取java設定檔的類,我們把常用的配置資訊寫在設定檔中,方便維護,讀取。

Properties設定檔:Java設定檔一般是properties結尾的。格式是鍵=值對的,可以用#來注釋,

添加Properties設定檔步驟:SRC檔案夾右鍵-----NEW -----File-----輸出properties結尾的設定檔。

在檔案中添加配置資訊:
eg:

Driver=com.mysql.jdbc.Driver                   //添加載入驅動的字串

Url=jdbc:mysql://localhost:3306/epet           //添加連結的字串,localhost也可以為IP地址,3306為連接埠號碼,epet是資料庫名稱

Username=epetAdmin                         //資料庫使用者名稱

Password=root                             //資料庫使用者密碼

Java中的設定檔常為properties檔案

尾碼為.properties

格式是“鍵=值”格式

使用“#”來注釋

       ●Java中提供了Properties類來讀取設定檔

方法名

說    明

String getProperty(String key)

用指定的鍵在此屬性列表中搜尋屬性。通過參數key得到其所對應的值

Object setProperty(String key,String value)

調用Hashtable的方法put。通過調用基類的put()方法來設定鍵-值對

void load(InputStream inStream)

從輸入資料流中讀取屬性列表 (鍵和元素對)。通過對指定檔案進行裝載擷取該檔案中所有鍵-值對

void clear()

清除所裝載的鍵-值對,該方法由基類Hashtable提供

6、使用實體類傳遞資料:資料存取碼和商務邏輯代碼之間通過實體類類傳輸資料,把相關的資訊封裝到實體類中,程式把實體類作為方法的參數來傳遞。

實體類的特徵

  實體類一般屬性使用private修飾

  根據業務需求和封裝性要求對實體類進行getter/setter方法,負責屬性的讀取和賦值,一般使用public修飾

  對實體類提供無參的建構函式,根據業務需求提供有參數的構造方法。

  實體類最好實現java.io.Serializable介面,支援序列化機制,可以將改對象轉化為位元組序列化而儲存到磁碟(硬碟)或者網路上傳輸。

  如果實體類實現了serializable介面。就應該定義屬性serialVersionUID,解決不同版本的序列化問題。。。

 

使用Java實現資料庫編程—08 DAO 模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.