iBATIS sqlMapConfig配置詳解


  1 <?xml version="1.0" encoding="UTF-8" ?>
  2 <!DOCTYPE sqlMapConfig 
  3 PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" 
  4 "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
  5 <sqlMapConfig>
  6 <!-- 
  7 <properties resource="properties/database.properties"/>
  8 可將SqlMap中的<property />內容寫到配置文件中,從此處引用。
  9 SQL Map配置文件及其每個映射文件都可以使用占位符${}
 10 -->
 11 <settings 
 12 cacheModelsEnabled="true" 
 13 enhancementEnabled="true" 
 14 lazyLoadingEnabled="true" 
 15 errorTracingEnabled="true" 
 16 maxRequests="32" 
 17 maxSessions="10" 
 18 maxTransactions="5" 
 19 useStatementNamespaces="false" 
 20 />
 21 <!-- 
 22 <settings 
 23 cacheModelsEnabled="true" 
 24 是否啟用SqlMapClient上的緩存機制。 
 25 建議設為"true" 
 26 enhancementEnabled="true" 
 27 是否針對POJO啟用字節碼增強機制以提升
 28 getter/setter的調用效能,避免使用Java 
 29 Reflect所帶來的性能開銷。 
 30 同時,這也為Lazy Loading帶來了極大的性能
 31 提升。 
 32 建議設為"true" 
 33 lazyLoadingEnabled="true" 
 34 是否啟用延遲加載機制,建議設為"true" 
 35 errorTracingEnabled="true" 
 36 是否啟用錯誤日志,在開發期間建議設為"true"
 37 以方便調試 
 38 maxRequests="32" 
 39 最大並發請求數(Statement並發數) 
 40 maxSessions="10" 
 41 最大Session數。即當前最大允許的並發
 42 SqlMapClient 數。 
 43 maxSessions設定必須介於
 44 maxTransactions和maxRequests之間,即 
 45 maxTransactions<maxSessions=<maxRequests 
 46 maxTransactions="5" 
 47 最大並發事務數 
 48 useStatementNamespaces="false" 
 49 是否使用Statement命名空間。 
 50 這里的命名空間指的是映射文件中, sqlMap節點
 51 的namespace屬性,如在上例中針對t_user
 52 表的映射文件sqlMap節點: 
 53 <sqlMap namespace="User"> 
 54 這里,指定了此sqlMap節點下定義的操作均從
 55 屬於"User"命名空間。 
 56 在useStatementNamespaces="true"的情
 57 況下,Statement調用需追加命名空間,如:
 58 sqlMap.update("User.updateUser",user); 
 59 否則直接通過Statement名稱調用即可,如: 
 60 sqlMap.update("updateUser",user); 
 61 但請注意此時需要保證所有映射文件中,
 62 Statement定義無重名。 
 63 />
 64 -->
 65 
 66 <transactionManager type="JDBC" commitRequired="false">
 67 
 68 <!--
 69 <transationManager>元素讓您為SQL Map配置事務管理服務。
 70 屬性type指定所使用的事務管理器類型。
 71 這個屬性值可以是一個類名,也可以是一個別名。
 72 包含在框架的三個事務管理器分別是:JDBC,JTA和EXTERNAL。
 73 
 74 JDBC:通過常用的Connection commit()和rollback()方法,讓JDBC管理事務。
 75 
 76 JTA:本事務管理器使用一個JTA全局事務,使SQL Map的事務包括在更大的事務范圍內,
 77 這個更大的事務范圍可能包括了其他的數據庫和事務資源。
 78 這個配置需要一個UserTransaction屬性,以便從JNDI獲得一個UserTransaction。
 79 
 80 EXTERNAL:這個配置可以讓您自己管理事務。您仍然可以配置一個數據源,
 81 但事務不再作為框架生命周期的一部分被提交或回退。
 82 這意味着SQL Map外部應用的一部分必須自己管理事務。
 83 這個配置也可以用於沒有事務管理的數據庫(例如只讀數據庫)。
 84 -->
 85 
 86 <dataSource type="DBCP">
 87 <!-- 
 88 <datasource>是<transactionManager>的一部分,
 89 為SQL Map數據源設置了一系列參數。
 90 目前SQL Map架構只提供三個DataSource Factory,但您也可以添加自己的實現。
 91 
 92 SIMPLE: SimpleDataSourceFactory為DataSource提供了一個基本的實現,
 93 適用於在沒有J2EE容器提供DataSource的情況。
 94 它基於iBatis的SimpleDataSource連接池實現。 
 95 
 96 DBCP: DbcpDataSourceFactory實現使用Jakarta DBCP
 97 (Database Connection Pool)的DataSource API提供連接池服務。
 98 適用於應用/Web容器不提供DataSource服務的情況,或執行一個單獨的應用。
 99 
100 JNDI: JndiDataSourceFactory在應用容器內部從JNDI Context中
101 查找DataSource實現。當使用應用服務器,並且服務器提供了容器管理的連
102 接池和相關DataSource實現的情況下,可以使用JndiDataSourceFactory。
103 使用JDBC DataSource的標准方法是通過JNDI來查找。
104 -->
105 
106 <property name="JDBC.Driver" 
107 value="net.sourceforge.jtds.jdbc.Driver"/>
108 <property name="JDBC.ConnectionURL" 
109 value="jdbc:jtds:sqlserver://127.0.0.1:1433/EXTFFM"/>
110 <property name="JDBC.Username" value="sa"/>
111 <property name="JDBC.Password" value="sa"/>
112 <!--
113 SQL Map配置文件擁有唯一的<properties>元素,
114 用於在配置文件中使用標准的Java屬性文件(name=value)。
115 這樣做后,在屬性文件中定義的屬性可以作為變量在SQL Map配置文件
116 及其包含的所有SQL Map映射文件中引用。
117 
118 例如,如果屬性文件中包含屬性:
119 driver=org.hsqldb.jdbcDriver
120 SQL Map配置文件及其每個映射文件都可以使用占位符${driver}
121 來代表值org.hsqldb.jdbcDriver。例如:
122 <property name="JDBC.Driver" value="${driver}"/>
123 -->
124 
125 <property name="Pool.MaximumActiveConnections" value="10"/>
126 <!-- 數據庫連接池可維持的最大容量。缺省值: 10 -->
127 
128 <property name="Pool.MaximumIdleConnections" value="5"/>
129 <!-- 數據庫連接池中允許的掛起(idle)連接數。缺省值: 5 -->
130 
131 <property name="Pool.TimeToWait" value="500" />
132 <!-- 
133 當線程試圖從連接池中獲取連接時,連接池中無可用連接可供使用,
134 此時線程將進入等待狀態,直到池中出現空閑連接。
135 此參數設定了線程所允許等待的最長時間(單位:毫秒)缺省值: 10 
136 -->
137 <property name="Pool.MaximumCheckoutTime" value="120000"/>
138 
139 <!-- 
140 數據庫聯接池中,連接被某個任務所允許占用的最大時間,
141 如果超過這個時間限定,連接將被強制收回(單位:毫秒)。
142 缺省值: 20000 
143 -->
144 
145 
146 <property name="Pool.PingQuery" value="seslct 1 from FFM_Sequence" />
147 <!--
148 數據庫連接狀態檢測語句。
149 某些數據庫在連接在某段時間持續處於空閑狀態時會將其斷開。
150 而連接池管理器將通過此語句檢測池中連接是否可用。
151 它對性能的影響較大,應小心使用。檢測語句應該是一個最簡化的無邏輯SQL,
152 如:select 1 from dual缺省值: N/A
153 --> 
154 
155 <property name="Pool.PingEnabled" value="false" />
156 <!-- 是否允許檢測連接狀態。缺省值: false -->
157 
158 <property name="Pool.PingConnectionsOlderThan" value="1" />
159 <!-- 對持續連接時間超過設定值(毫秒)的連接進行檢測。缺省值: 0 -->
160 
161 <property name="Pool.PingConnectionsNotUsedFor" value="1" />
162 <!-- 對空閑超過設定值(毫秒)的連接進行檢測。缺省值: 0 -->
163 </dataSource>
164 </transactionManager>
165 <sqlMap resource="com/witnessj/ffm/domain/IBatisSqlMap/SequenceSqlMap.xml"/>
166 <!--
167 <sqlMap>元素用於包括SQL Map映射文件和其他的SQL Map配置文件。
168 每個SqlMapClient對象使用的所有SQL Map映射文件都要在此聲明。
169 映射文件作為stream resource從類路徑或URL讀入。
170 您必須在這里指定所有的SQL Map文件。
171 
172 List more here...
173 <sqlMap resource="com/mydomain/data/Order.xml"/>
174 <sqlMap resource="com/mydomain/data/Documents.xml"/>
175 -->
176 </sqlMapConfig>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM