注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

断尘居

温柔的男人像海洋。

 
 
 
 
 

日志

 
 

ibatis 开发指南(二)  

2010-09-17 03:37:40|  分类: SSH |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ibatis 配置
结合上面示例中的ibatis 配置文件。下面是对配置文件中各节点的说明:
<?xml version="1.0" encoding="UTF-8" ?> 
PUBLIC 
"> 
<sqlMapConfig> 
<settings ⑴
cacheModelsEnabled=
enhancementEnabled=
lazyLoadingEnabled=
errorTracingEnabled=
maxRequests=
maxSessions=
maxTransactions=
useStatementNamespaces=
/> 
<transactionManager type="JDBC"> ⑵
<dataSource type="SIMPLE"> ⑶
<property name="JDBC.Driver" 
value="com.p6spy.engine.spy.P6SpyDriver"/> 
<property name="JDBC.ConnectionURL" 
value="jdbc:mysql://localhost/sample"/> 
<property name="JDBC.Username" ="user"/> 
<property name="JDBC.Password" ="mypass"/> 
<property name=
value="10"/> 
<property name=value="5"/> 
<property name=
value="120000"/> 
<property name="Pool.TimeToWait" ="500"/> 
<property name="Pool.PingQuery" ="select 1 from 
ACCOUNT"/> 
<property name="Pool.PingEnabled" ="false"/> 
<property name=
value="1"/> 
<property name=
value="1"/> 
</dataSource> 
<!DOCTYPE sqlMapConfig 
"-//iBATIS.com//DTD SQL Map Config 2.0//EN" 
"http://www.ibatis.com/dtd/sql-map-config-2.dtd"true
"true" 
"true" 
"true" 
"32" 
"10" 
"5" 
"false" 
valuevalue"Pool.MaximumActiveConnections" 
"Pool.MaximumIdleConnections" 
"Pool.MaximumCheckoutTime" 
valuevaluevalue"Pool.PingConnectionsOlderThan" 
"Pool.PingConnectionsNotUsedFor" 

</transactionManager> 
<sqlMap resource="com/ibatis/sample/User.xml"/> ⑷ 
<sqlMap resource="com/ibatis/sample/Address.xml"/> 
</sqlMapConfig> 
⑴ Settings 节点
参数描述
cacheModelsEnabled 是否启用SqlMapClient 上的缓存机制。
建议设为"true" 
enhancementEnabled 是否针对POJO 启用字节码增强机制以提升
getter/setter 的调用效能,避免使用Java 
Reflect 所带来的性能开销。
同时,这也为Lazy Loading 带来了极大的性能
提升。
建议设为"true" 
errorTracingEnabled 是否启用错误日志,在开发期间建议设为"true" 
以方便调试
lazyLoadingEnabled 是否启用延迟加载机制,建议设为"true" 
maxRequests 最大并发请求数(Statement 并发数) 
maxTransactions 最大并发事务数
maxSessions 最大Session 数。即当前最大允许的并发
SqlMapClient 数。
maxSessions 设定必须介于
maxTransactions 和maxRequests 之间,即
maxTransactions<maxSessions=< 
maxRequests 
useStatementNamespaces 是否使用Statement 命名空间。
这里的命名空间指的是映射文件中,sqlMap 节点
的namespace 属性,如在上例中针对t_user 
表的映射文件sqlMap 节点: 
<sqlMap namespace="User"> 
这里,指定了此sqlMap 节点下定义的操作均从
属于"User"命名空间。
在useStatementNamespaces="true"的情
况下,Statement 调用需追加命名空间,如:

⑵ transactionManager 节点
sqlMap.update("User.updateUser",use 
r); 
否则直接通过Statement 名称调用即
sqlMap.update("updateUser",user); 
但请注意此时需要保证所有映射
定义无重名。
可,如:
文件中,
Statement 
transactionManager 节点定义了ibatis 的事务管理器,目前提供了以下几
种选择: 
 . JDBC 通过传统JDBC Connection.commit/rollback 实现事务支持。
 . JTA 使用容器提供的JTA 服务实现全局事务管理。
 . EXTERNAL 外部事务管理, 如在EJB 中使用ibatis,通过EJB 的部署配置即可实现自动的事务管理机制。此时ibatis 将把所有事务委托给外部容器进行管理。
此外,通过Spring 等轻量级容器实现事务的配置化管理也是一个不错的选
择。关于结合容器实现事务管理,参见“高级特性”中的描述。
⑶ dataSource 节点
dataSource 从属于transactionManager 节点,用于设定ibatis 运行期使
用的DataSource 属性。
type 属性: dataSource 节点的type属性指定了dataSource 的实现类型。
可选项目: 
 . SIMPLE: SIMPLE 是ibatis 内置的dataSource 实现,其中实现了一个简单的
  数据库连接池机制,对应ibatis 实现类为com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory 。
 . DBCP: 基于Apache DBCP 连接池组件实现的DataSource 封装,当无容器提供DataSource 服务时,建议使用该选项,对应ibatis 实现类为
  com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory 。
 . JNDI: 使用J2EE 容器提供的DataSource 实现,DataSource 将通过指定的JNDI Name 从容器中获取。对应ibatis 实现类为
  com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。

dataSource 的子节点说明(SIMPLE&DBCP): 

参数描述
JDBC.Driver JDBC 驱动。
如:org.gjt.mm.mysql.Driver 
JDBC.ConnectionURL 数据库URL 。
如:jdbc:mysql://localhost/sample 
如果用的是SQLServer JDBC Driver,需要
在url 后追加SelectMethod=Cursor 以获得
JDBC 事务的多Statement 支持。
JDBC.Username 数据库用户名
JDBC.Password 数据库用户密码
Pool.MaximumActiveConnections  数据库连接池可维持的最大容量。
Pool.MaximumIdleConnections 数据库连接池中允许的挂起(idle)连接数。
以上子节点适用于SIMPLE 和DBCP 模式,分别针对SIMPLE 和DBCP 模式的DataSource 私有配置节点如下:
SIMPLE: 
参数描述
Pool.MaximumCheckoutTime 数据库联接池中,连接被某个任务所允许占用的最大时间,如果超过这个时间限定,连接将被强制收回。(毫秒) 
Pool.TimeToWait 当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,此时线程将进入等待状态,直到池中出现空闲连接。此参数设定了线程所允
许等待的最长时间。(毫秒) 
Pool.PingQuery 数据库连接状态检测语句。某些数据库在连接在某段时间持续处于空闲状态时会将其断开。而连接池管理器将通过此语句检测池中连接是否可用。
检测语句应该是一个最简化的无逻辑SQL 。
如“select 1 from t_user”, 如果执行此语句
成功,连接池管理器将认为此连接处于可用状态。
Pool.PingEnabled 是否允许检测连接状态。
Pool.PingConnectionsOlderThan 对持续连接时间超过设定值(毫秒)的连接进行检测。
Pool.PingConnectionsNotUsedFor 对空闲超过设定值(毫秒)的连接进行检测。
DBCP: 
参数描述
Pool.MaximumWait 当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,此时线程将进入等待状态,直到池中出现空闲连接。此参数设定了线程所允
许等待的最长时间。(毫秒) 
Pool.ValidationQuery 数据库连接状态检测语句。某些数据库在连接在某段时间持续处于空闲状态时会将其断开。而连接池管理器将通过此语句检测池中连接是否可用。
检测语句应该是一个最简化的无逻辑SQL 。
如“select 1 from t_user”, 如果执行此语句
成功,连接池管理器将认为此连接处于可用状态。
Pool.LogAbandoned 当数据库连接被废弃时,是否打印日志。
Pool.RemoveAbandonedTimeout  数据库连接被废弃的最大超时时间
Pool.RemoveAbandoned 当连接空闲时间超过
RemoveAbandonedTimeout 时,是否将其废弃。
JNDI 由于大部分配置是在应用服务器中进行,因此ibatis 中的配置相对简单,下面
是分别使用JDBC 和JTA 事务管理的JDNI 配置: 
使用JDBC 事务管理的JNDI DataSource 配置
<transactionManager type="JDBC" > 
<dataSource type="JNDI"> 
<property name="DataSource" 
value="java:comp/env/jdbc/myDataSource"/> 
</dataSource> 
</transactionManager> 
<transactionManager type="JTA" > 
<property name="UserTransaction" 
value="java:/ctx/con/UserTransaction"/> 
<dataSource type="JNDI"> 
<property name="DataSource" 
value="java:comp/env/jdbc/myDataSource"/> 
</dataSource> 

</transactionManager>
⑷ sqlMap 节点
sqlMap 节点指定了映射文件的位置,配置中可出现多个sqlMap 节点,以指定
项目内所包含的所有映射文件。

  评论这张
 
阅读(1372)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017