华人彩票是黑彩吗:Ibatis2.0使用说明(二)——配置篇(1)

来源:百度文库 编辑:中财网 时间:2024/04/29 19:51:41
一、 SQL Map XML 配置文件
SQL Map 使用XML 配置文件集中的配置不同的设置属性,包括DataSource 的详细配置信息,SQL Map 和其他可选属性,如线程管理等。以下是SQL Map 配置文件的一个例子:
SqlMapConfig.xml

PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">





cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>






















下面详细讨论SQL Map 配置文件的各组成部分。
(一) 元素
SQL Map 配置文件拥有唯一的元素,用于在配置文件中使用标准的Java属性文件(name=value)。在属性文件中定义的属性可以作为变量在SQL Map 配置文件及其包含的所有SQL Map 映射文件中引用。
例如,如果属性文件中包含属性:driver=org.hsqldb.jdbcDriverSQL Map 配置文件及其每个映射文件都可以使用占位符${driver} 来代表值org.hsqldb.jdbcDriver。例如:这个元素在开发,测试和部署各阶段都很有用。它可以使在多个不同的环境中重新配置应用和使用自动生成工具(如ANT)变得容易。Java属性文件可以通过类路径导入,也可以通过有效的URL导入。例如:(二) 元素
元素用于配置和优化利用XML配置文件创建的SqlMapClient实例。元素及其所有的属性都是可选的。下面列出了元素支持的属性和功能:1. maxExecute
同时执行一个Sql statement的最大线程数,大于这个值的线程将阻塞直到另一个线程退出。不同的DBMS 有不同的限制值。
例子:maxExecute="256"
缺省值:512一般情况下,这个值要大于10,而且要同时比maxSessions和maxTransactions参数设定的值大。通常情况下,减少最大同时访问次数可以提高执行的效率。2. maxSessions
是指在一个给定时间内处于活动状态的session(或客户端)的数量。这个值一般要大于或等于maxTransactions的参数值,同时要小于maxRequests的参数值
例子: maxSessions="64"
缺省值:1283. maxTransaction
同时进入SqlMapClient.startTransaction()的最大线程数。大于这个值的线程将阻塞直到另一个线程退出。不同的DBMS 有不同的限制值。这个值应该总是小于或等于maxSessions,而且要比maxRequests小的多。通常情况下,减少这个值可以提高执行的效率。
例子:maxTransaction="16"
缺省值:324. cacheModelsEnabled
启用或禁用SqlMapClient所有的cache models。调试程序时有用。
例子:cacheModelsEnabled="true"
缺省值:true5. lazyLoadingEnabled
启用或禁用SqlMapClient所有的lazy loading。调试程序时有用。
例子:lazyLoadingEnabled="true"
缺省值:true6. enhancementEnabled
This setting enables runtime bytecode enhancement to facilitate optimized JavaBean property access as well as enhanced lazy loading.
例子 enhancementEnabled="true"
缺省值: false (disabled)7. useStatementNamespaces
这个选项如果启用,你就必须使用全限定名来引用mapped statements,这个全名是由sqlMap的名字和statement的名字组成的。
例如:queryForObject("sqlMapName.statementName");例子: useStatementNamespaces="false"
缺省值: false (disabled)(三) 元素
允许你指定别名。这样你就可以通过你指定的短名字来代替冗长的名字了。
例如:
下面是在SqlMap中预定义的别名:
1. Transaction Manager Aliases
JDBC  com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransactionConfig
JTA  com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConfig
EXTERNAL com.ibatis.sqlmap.engine.transaction.external.ExternalTransactionConfig2. Data Source Factory Aliases
SIMPLE  com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory
DBCP  com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory
JNDI  com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory(四)元素
注意:在Sql Map 1.0版本中,允许同时配置多个数据源,这样会导致一些问题。所以从2.0的版本开始,只允许配置一个数据源,如果你有配置多个数据源的需求的话,建议你使用多个不同配置的属性文件,或者在build Sql Map的时候,作为一个参数传进来。元素允许你为SQL Map配置事务管理服务。type属性用来指明使用哪种事务管理,值既可以是一个类名字,也可以是一个别名。在框架中已经包含了三种事务管理:JDBC, JTA 和 EXTERNAL
 
1. JDBC
允许用JDBC通过Connection 的commit()和rollback()方法来控制事务。2. JTA
这种事务管理使用一个JTA的全局事务将SQL Map的activities作为一个wider scope事务的一部分而包含进来,这个事务可能包含其他的数据库或事务
源。这个配置需要一个UserTransaction属性来通过JNDI resource设置本地的user transaction。3. EXTERNAL
允许你自己管理事务。你仍然可以配置一个数据源,但是事务不会在框架生命周期中被提交或回滚。这意味着你必须要用自己的程序来控制事务。这个设置对于非事务型数据库是非常有用的。(五) 元素
标签及其属性是的配置的一部分,它也是用于配置你的SQL Map所使用的数据源的。
目前本框架提供三种数据源工厂,但是你也可以自己写一个。下面是每一种数据源工厂的配置举例:1. SimpleDataSourceFactory
SimpleDataSourceFactory 为池化的DataSource提供了一个基本的实现,适用于在没有容器提供数据源的情况。
 
 
 
 
   
 
 
 
 
 
 
 
 
 

2. DbcpDataSourceFactory
DbcpDataSourceFactory 实现使用Jakarta DBCP(Database Connection Pool)的DataSource
API 提供连接池服务。适用于Web 容器不提供DataSource 服务的情况,或执行一个单独的
应用。DbcpDataSourceFactory 中必须要配置的参数例子如下:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

3. JndiDataSourceFactory
JndiDataSourceFactory 在应用服务器的容器中从JNDI Context 中查找DataSource 实现。当使用应用
服务器,并且服务器提供了容器管理的连接池和相关的DataSource 实现的情况下,可以使用
JndiDataSourceFactory。使用JDBC DataSource 的标准方法是通过JNDI 来查找。JndiDataSourceFactory必须要配置的属性如下:

 
 
 


注意:上面的配置是使用标准的JDBC事务管理。但是,在一个容器管理的数据源中,你也可能想为全局的事务做如下配置:

 
 
 
 

注意:UserTransaction属性指向一个JNDI的位置,你可以通过这个JNDI找到一个UserTransaction实例。这个在JTA的事务管理中是需要的,这样可以使你的SQL MAP参与到包含有其他数据库和事务源的事务中。(六)元素
sqlMap元素用于包括SQL Map 映射文件和其他的SQL Map 配置文件。每个SqlMapClient
对象使用的SQL Map 映射文件都要在此声明。映射文件作为stream resource 从类路径或URL中读
入。您必须相对于类路径或URL来指定所有的SQL Map 文件。
下面是几个例子:





本篇文章来源于 新技术天空 原文链接:http://www.ntsky.com/tech/java/opensource/ibatis/2007-06-29/040bcaface3aa002.html