5.IBatis框架的SQL Map配置文件

    在IBatis SQL Map框架中,需要一個配置文件來聲明一些基本信息。該文件類似Hibernate框架的配置文件“hibernate.cfg.xml”,SQL Map初始化期間,會自動在classpath中尋找這個文件,並讀取其中的配置信息。

 

配置文件的名稱並不重要,可以由程序員來指定,這裏假設該配置文件名爲sql_map_config.xml。在配置文件中通常會配置如下這些持久層框架信息:

q        數據庫連接JDBC

q        SQL Map映射文件的加載。

q        SQL Map的配置和優化設定。

下面看一個sql_map_config.xml示例12.1

12.1sql_map_config.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"

         "http://www.ibatis.com/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

         <!-- 配置和優化SQL Map解析實例的設定 -->

         <settings cacheModelsEnabled="true"

                       enhancementEnabled="true"

                       lazyLoadingEnabled="true"

                       maxRequests="32"

                       maxSessions="10"

                       maxTransactions="5"

                       useStatementNamespaces="true" />

 

         <!-- 配置連接 -->

         <transactionManager type="JDBC" >

                   <dataSource type="SIMPLE">

                            <property name="JDBC.Driver" value="org.postgresql.Driver"/>

                            <property name="JDBC.ConnectionURL"

                                     value="jdbc:postgresql://192.168.3.53:5432/nrsattacksolution"/>

                            <property name="JDBC.Username" value="sa"/>

                            <property name="JDBC.Password" value="1111"/>

                            <!-- 最大連接數 -->

                            <property name="Pool.MaximumActiveConnections" value="10"/>

                   </dataSource>

         </transactionManager>

 

         <!-- SQL Map映射文件的取得… -->

         <sqlMap resource="fw_attacksolution_SqlMap.xml" />

</sqlMapConfig>

在這個配置文件中,明確表示了SQL Map框架的配置參數,以<sqlMapConfig>作爲根結點是必不可少的。隨後使用了<settings>元素、<transactionManager>元素和<sqlMap>元素。

<settings>元素中提供了多個屬性來配置和優化SQL Map運行時的實例:

q        maxRequests屬性指定了同時執行SQL語句最大運行數。

q        maxSessions屬性指定了同一時間內活動的最大Session數。所謂Session就是一個請求或一個SQL Map運行時實例自動獲得的會話。

q        maxTransactions屬性指定了最大事務處理的線程數。

q        cacheModelsEnabled屬性指定了SQL Map運行時實例的緩存Model是否開啓。

q        lazyLoadingEnabled屬性指定了持久化數據是否延遲加載。

q        enhancementEnabled屬性指定了全局性的啓用或禁用字節碼增強,以優化訪問POJO變量屬性的功能。

q        useStatementNamespaces屬性指定了在SQL Map映射文件中是否用全限定名來引用映射聲明。

<transactionManager>元素用來配置事務管理。<transactionManager>元素的屬性type指定了所使用的事務管理器的類型。該屬性值可以是一個別名,也可以是一個類名,本例中所使用的JDBC就是一個別名,它是由IBatis框架所提供。包含在IBatis框架中的事務管理器有三個:除了本例所使用的JDBC(用來管理事務)外,還提供了JTAEXTERNAL兩個事務管理器。其中JTA將提供全局的事務管理,EXTERNAL則可以讓程序員自行管理事務。

<transactionManager>元素的子元素<dataSource>JDBC數據源設置了一系列參數,這些參數將被用於連接數據庫。在SQL Map架構中提供了三種JDBC連接的方式,可以利用type屬性來設置這三種方式:

q        SimpleDataSourceFactoryIBatis框架提供的基本連接池的實現,當容器沒有提供數據源時可以選擇它。SimpleDataSourceFactory的別名已經由IBatis框架所定義,名爲“SIMPLE”。本例就是使用SimpleDataSourceFactory作爲連接池。

q        DbcpDataSourceFactoryIBatis框架使用DBCP連接池所提供的服務。在Web容器中經常會使用它,在第三章的完整示例中曾經使用它來配置Struts框架部分DAOJDBC連接池。DbcpDataSourceFactory的別名已經由IBatis框架所定義,名爲“DBCP”。

q        JndiDataSourceFactoryIBatis框架提供的對JNDI命名服務的支持,它可以在容器中利用JNDI從上下文中找到連接池的實現。在介紹EJB的配置以及Hibernate框架時,曾經將它作爲在JBoss服務器中取得連接池的實現,在IBatis框架中是一樣的道理。JndiDataSourceFactory的別名已經由IBatis框架所定義,名爲“JNDI”。

本例中最後一個元素是<sqlMap>元素,利用屬性resource來指定SQL Map映射文件的路徑定義。SQL Map映射文件可以從classpath中得到,所以這個路徑的定義是以classpath爲根目錄開始的。本例中沒有定義其他路徑,說明SQL Map映射文件將被直接放置在classpath路徑下。SQL Map映射文件可以有多個。

 
發佈了19 篇原創文章 · 獲贊 6 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章