DAO層究竟是什麼

來源:互聯網
上載者:User

連續寫了兩篇關於階層的東西,一直在講層與層之間的關係,資料對象在層次之間的傳遞處理,那麼到底什麼應該放到DAO層呢?當然,我在之前簡單的介紹了一下DAO層的模型。現在詳細說明一下,到底什麼東西在DAO層。

 

首先,以JDBC為基礎,開始思考這個問題。

在查詢一個使用者資訊(id,name)的時候,我們常常是這麼操作的:

1. 擷取一個connection

2. 產生一個statement

3. 拼接SQL語句

4. 查詢對象,擷取結果集(假設已經找到我們需要的對象)

5. 讀取結果集資訊,封裝成需要的使用者物件

6. 關閉結果集,statement,connection

 

其次,考慮一下Hibernate怎麼處理?

1. 建立使用者資訊對象,並配置好對象關係映射

2. 擷取一個Session對象

3. 生產一個Query對象

4. 編寫HQL語句

5. 執行Query.list()方法,擷取對象資訊(這裡Hibernate架構根據映射關係,完成對象與關係之間的轉換)

6. 關閉Session對象

 

細細看來,其實,他們處理都是基本相同的,只是不同的就是在進行封裝過程中,略有不同了。

 

那麼我們來看一下Ibatis是如何處理的,

1. 編寫PO對象,配置sqlMap檔案

2. 產生SqlMapClient對象

3. 操作對應的SQL,返回結果(sql語句,我們寫的設定檔中,對象封裝由Ibatis架構完成)

4. 關閉SqlMapClient

 

DAO層處理的應該是對象關係相互轉換的工作,它需要的是一個連線物件,但是它不關心這個對象怎麼來,而且不關心在轉換工作完成後,做怎麼樣的處理。就像Ibatis架構似的,它在項目就充當著DAO的作用,因為我們通過設定檔和實體物件我們已經完成了對象關係的轉換。而針對JDBC和Hibernate技術,我個人覺得,我們可以把一個串連作為參數傳遞到DAO,以避免我們為DAO的每個方法中都擷取一個連線物件,這樣我們就可以不用在DAO中處理資料庫連接的開啟和關閉了,從何在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.