配置文件的名稱並不重要,可以由程序員來指定,這裏假設該配置文件名爲sql_map_config.xml。在配置文件中通常會配置如下這些持久層框架信息:
q 數據庫連接JDBC。
q SQL Map映射文件的加載。
q SQL Map的配置和優化設定。
下面看一個sql_map_config.xml示例12.1:
例12.1:sql_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(用來管理事務)外,還提供了JTA和EXTERNAL兩個事務管理器。其中JTA將提供全局的事務管理,EXTERNAL則可以讓程序員自行管理事務。
<transactionManager>元素的子元素<dataSource>爲JDBC數據源設置了一系列參數,這些參數將被用於連接數據庫。在SQL Map架構中提供了三種JDBC連接的方式,可以利用type屬性來設置這三種方式:
q SimpleDataSourceFactory是IBatis框架提供的基本連接池的實現,當容器沒有提供數據源時可以選擇它。SimpleDataSourceFactory的別名已經由IBatis框架所定義,名爲“SIMPLE”。本例就是使用SimpleDataSourceFactory作爲連接池。
q DbcpDataSourceFactory是IBatis框架使用DBCP連接池所提供的服務。在Web容器中經常會使用它,在第三章的完整示例中曾經使用它來配置Struts框架部分DAO的JDBC連接池。DbcpDataSourceFactory的別名已經由IBatis框架所定義,名爲“DBCP”。
q JndiDataSourceFactory是IBatis框架提供的對JNDI命名服務的支持,它可以在容器中利用JNDI從上下文中找到連接池的實現。在介紹EJB的配置以及Hibernate框架時,曾經將它作爲在JBoss服務器中取得連接池的實現,在IBatis框架中是一樣的道理。JndiDataSourceFactory的別名已經由IBatis框架所定義,名爲“JNDI”。
本例中最後一個元素是<sqlMap>元素,利用屬性resource來指定SQL Map映射文件的路徑定義。SQL Map映射文件可以從classpath中得到,所以這個路徑的定義是以classpath爲根目錄開始的。本例中沒有定義其他路徑,說明SQL Map映射文件將被直接放置在classpath路徑下。SQL Map映射文件可以有多個。