成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iBATIS DAO入門基礎教程

開發 后端
iBATIS DAO入門基礎教程向你介紹iBATIS DAO的一些情況,希望對你在了解iBATIS DAO方面有所幫助。

iBATIS DAO的學習首先我們要介紹下iBATIS DAO,在核心J2EE模式中是這樣介紹iBATIS DAO模式的:為了建立一個健壯的J2EE應用,應該將所有對數據源的訪問操作抽象封裝在一個公共API中。用程序設計的語言來說,就是建立一個接口,接口中定義了此應用程序中將會用到的所有事務方法。在這個應用程序中,當需要和數據源進行交互的時候則使用這個接口,并且編寫一個單獨的類來實現這個接口在邏輯上對應這個特定的數據存儲。

比如考慮在iBATIS: SQL Maps中的應用例子。這是一個Struts應用答應對一個關系表執行SELECT, INSERT, UPDATE和DELETE的SQL請求。在這個應用中,使用SQL Maps做持續性框架?,F在我們要修改這個應用,將這個關系表儲存在一個XML文件中而不是存在關系數據庫中,或者使用Hibernate來實現SELECT請求,而用SQL Map來執行其他請求,因為Hibernate提供了對高速緩存更好的支持。這樣的修改很難實現,或者即使我們能修改而實現了這個功能,也會是很混亂的解決方案。

對于這類問題更好的解決方法是建立一個ContactDAO接口,在這個接口中定義處理SELECT, INSERT, UPDATE, 和DELETE 請求的事務方法。然后根據不同的事務邏輯建立不同的類實現各個方法。所以可能會有一個類處理使用SQL Maps同關系表進行交互的情況,而另外一個類處理用XML文件存放關系表而不是關系數據庫的情況,等等。在項目中,根據實際的需要從不同的ContactDAO中選擇相應的實現。這種關系見圖1:

ContactDAO 接口及實現 

圖1. ContactDAO 接口及實現

iBATIS DAO是由Apache主持的開源框架項目,主要目標是為了解決這類問題。它答應在工程中以DAO模式為基礎建立應用。這就意味著可以建立一個XML文件,并聲明XMLContactDAO.Java是ContactDAO的實現類,這個類知道如何從XML文件中讀寫數據。SQLMapContactDAO則知道如何用SQL Maps作為持續化框架與關系表進行交互。在工程中,假如向iBATIS DAO框架提交一個需要XML的ContactDAO請求,框架則會返回一個XMLContactDAO對象。同樣的DAO框架提供了唯一的接口處理事務治理,這個接口能實現與數據的存儲方式無關。它同樣考慮了底層連接治理細節和初始化存儲框架。

這篇文章是關于如何一步一步的在項目中應用iBATIS DAO框架的基礎指導。我們將由如何把SQL Maps一文中的應用實例改為應用DAO框架入手。然后,我們要討論DAO框架的構造。再下一步,我們關注事務治理是如何在DAO框架中得到支持的。***一部分是關于如何建立自己的事務治理模塊。

示例應用

首先,我們將SQL Maps一文中的例子改為應用iBATIS DAO框架。

1.將iBATIS-dao-2.jar文件復制到WEB-INF/lib目錄下。

2.在Java源程序的目錄里新建一個如下的DAOMap.xml文件

清單1:

  1.        "com/sample/contact/dao/sqlmap/SqlMapConfig.xml"/> 
  2.       
  3.          implementation=  
  4.      "com.sample.contact.dao.sqlmap.SQLMapContactDAO"/> 

DAOMap.xml是發布iBATIS DAO框架的配置文件。是根元素,每個元素描述了一種存儲機制。在這個例子中只使用了SQL Maps來存儲,所以我們這里只有一個元素。每種存儲機制必須包含一個元素,這個元素描述連接它后面的數據存儲所用的治理器,并且標記事務的界限。我們將在稍后再討論transactionManager。

元素還包括一組DAO用于描述其他的存儲治理機制。在這個例子中,我們將生成一個使用SQL Maps存儲的ContactDAO,所以在配置文件中添加一個ie標記來定義SQLMapContactDAO。

3.建立ContactDAO.java,如下:

單2:

  1. public interface ContactDAO extends DAO {  
  2.     
  3.        public int insertContact(Contact contact);  
  4.       public int updateContact(Contact contact);  
  5.       public Contact selectContact(int contactId);  
  6.       public int deleteContact(int contactId);  
  7.   }  

ContactDAO.java定義了用戶和一個關系表進行交互所需要用到的所有事務處理方法。請注重到ContactDAO.java中的所有方法都將一個Contact對象作為參數,這是一個用來攜帶數據的數據傳遞對象。

4.建立一個SQLMapContactDAO.java文件,如下

清單3:

  1. public class SQLMapContactDAO extends 
  2.    SqlMapDaoTemplate implements ContactDAO {  
  3.     public SQLMapContactDAO(DaoManager arg0) {  
  4.         super(arg0);  
  5.     }  
  6.     public int deleteContact(int contactId) {  
  7.       return super.delete("deleteContact",  
  8.       new Integer(contactId));  
  9.     }  
  10.     public int insertContact(Contact contact) {  
  11.     
  12.        Integer contactId =(Integer)super.insert  
  13.         ("insertContact",contact);  
  14.       return contact.getContactId();  
  15.     }  
  16.     public Contact selectContact(int contactId) {  
  17.       return (Contact)super.queryForObject("getContact",  
  18.         new Integer(contactId));  
  19.     }  
  20.     public int updateContact(Contact contact) {  
  21.       return super.update("updateContact",contact);  
  22.     }  
  23.   } 

SQLMapContactDAO是ContactDAO接口的具體實現,它用SQL Maps作為存儲治理機制。注重到我們并沒有寫任何代碼來或者初始化SQL Maps,或得到一個連接,或者在類中標注一個事務的界限。相反,我們繼續SqlMapDaoTemplate.java類,它幫我們處理下層的、反復的操作。我們在SQLMapContactDAO類中需要考慮的唯一的事情就是事務處理邏輯。

5.修改ContactSelectAction.java類中的execute()方法,如下:

清單4:

  1. Contact contactForm = (Contact) form;  
  2.     
  3.    Reader reader=  
  4.     Resources.getResourceAsReader("DAOMap.xml");  
  5.   DaoManager daoManager =  
  6.     DaoManagerBuilder.buildDaoManager(reader);  
  7.   ContactDAO contactDAO =  
  8.     (ContactDAO) daoManager.getDao(  
  9.   ContactDAO.class,"sqlmap");  
  10.     
  11.   request.setAttribute("contactDetail",  
  12.     contactDAO.selectContact(  
  13.       contactForm.getContactId())); 

***一步是修改ContactSelectAction類中的execute()方法,使它使用iBATIS DAO框架。為了初始化DAO框架,我們需要一個為DAOMap.xml 預備一個Reader對象。iBATIS框架為我們提供了方法Resources.getResourceAsReader()來讀取資源。一旦有了Reader對象來讀取DAOMap.xml,就能將它們讀取至DAOManagerBuilder.buildDaoManager(),返回一個DaoManager實例,將來用于與iBATIS DAO框架進行交互。從理論上來說,應該在項目啟動的時候初始化iBATIS DAO框架,在我們這個程序中,可以將這個模塊放入Struts插件中,但是為了簡化這個例子,我們將初始化模塊放入execute方法中。

有了DaoManager實例后,可以調用相應的接口和存儲實現類(在元素中的id屬性值)的getDao()方法。在我們的例子中,需要一個SQLMapContactDAO的實例,所以以ContactDAO為接口名稱,“sqlmap”為存儲機制。一旦實現了SQLMapContactDAO實例,就可以在調用其中的事務方法。

iBATIS DAO的相關介紹就到這里,在其他的文章中還會在涉及iBATIS DAO的其他方面。

【編輯推薦】

  1. iBATIS ResultMap基礎淺析
  2. iBATIS CacheModel使用淺析
  3. iBATIS分頁實例中ObjectDataSource的應用淺析
  4. iBATIS模糊查詢的實現實例淺析
  5. iBATIS動態查詢的實現淺析
責任編輯:仲衡 來源: cnd8
相關推薦

2009-07-16 16:27:33

ibatis DAO

2010-07-23 12:23:49

Perl基礎

2009-07-16 09:14:26

iBATIS DAO

2009-07-20 18:00:16

iBATIS DAO事

2009-07-16 17:01:32

ibatis dao

2009-07-17 09:44:40

iBATIS教程

2009-07-21 14:24:46

iBATIS教程

2009-07-21 13:08:08

iBATIS DAO

2010-06-11 13:53:54

UML建模

2017-12-12 07:47:59

dockermarathon服務器

2017-07-18 10:14:23

OracleMerge into教程

2011-07-18 09:35:29

iPhone 框架

2009-07-17 14:20:31

ibatis Dao

2009-07-21 11:17:46

iBATISDAO的配置

2016-08-31 14:01:31

MySQL存儲數據庫

2011-09-13 16:39:50

Android UI設

2009-07-17 14:03:34

ibatis DAO事務管理

2009-07-20 14:56:18

iBATIS.NET動態選擇DAO

2020-03-23 08:09:47

VS CodePythonJupyter Not

2011-07-15 14:19:10

故障恢復控制臺
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伊人国产精品 | 亚洲日本三级 | 久久69精品久久久久久久电影好 | 久久久婷婷 | 伊人伊成久久人综合网站 | 99久久久久久 | 久久亚 | 在线91 | 91在线视频在线观看 | 国产一区二区三区在线看 | 国产中文一区二区三区 | 亚洲天堂中文字幕 | 成人午夜av | 欧美国产精品一区二区三区 | 一区二区三区影院 | 天天综合网天天综合色 | 亚洲大片在线观看 | 成人在线免费观看 | 亚洲精品视频免费看 | 欧美激情欧美激情在线五月 | 国产福利免费视频 | 欧洲毛片| 亚洲 中文 欧美 日韩 在线观看 | 精品国产乱码久久久久久蜜退臀 | 久久久久久久久久久久久久久久久久久久 | 视频精品一区二区三区 | 中文字幕亚洲视频 | 欧美精品日韩精品 | 欧美精品久久 | 综合久久亚洲 | 中文字幕日本一区二区 | 色噜噜狠狠色综合中国 | 99伊人网| 97精品超碰一区二区三区 | 久久综合婷婷 | 国产一二三区精品视频 | 韩国av一区二区 | 91九色porny首页最多播放 | 久久久不卡网国产精品一区 | 欧美国产视频 | 久久小视频 |