ibatis中simple,dbcp,jndi的区别

本文详细解析了ibatis配置文件中的dataSource和transactionManager节点配置选项,包括SIMPLE、DBCP、JNDI、JDBC、JTA和EXTERNAL的区别及应用场景,并讨论了ibatis缓存机制的使用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在ibatis的配置文件中dataSource 节点有这么个配置<datasource type="SIMPLE"></datasource>,根据原文下的解释知道其中type有SIMPLE,DBCP,JNDI三 种.我想问下这三种类型的区别在于哪里, 在什么情况下用到,常用的是哪个 ,及它的优点在于哪里?

看情况,simple用于测试,dbcp是采用dbcp做数据源,jndi是使用app server提供的数据源 
一般来说,在实际应用中jndi用的比较多,simple用于测试 
不过,多说了一句,dataSource一般都是在spring中创建或管理,所以和spring集成时,很少使用ibatis的dataSource节点


2.在 <transactionmanager type="JDBC"> </transactionmanager> 这个配置中有type也有JDBC,JTA,EXTERNAL.我想问下基于JDBC,及JTA的事务可以应用到哪中程度.而对EXTERNAL在什么情况下会用到?

JDBC使用 数据库自己的事务(局部事务),connect.beginTranstion(), connect.commit()等 
JTA : 使用jta 事务管理器管理事务(全局事务),使用userTranstion对象 
External: 自己(Ibatis)不控制事务,事务交由外部控制,一般在CTM,或spring托管事务中使用

 

常用的是External,应为在我的应用中,事务都是用spring托管的,如果不是,那就就用jdbc,如果在app server中,你又不想使用容器托管事务,那就用JTA

3.在开发指南中提到"ibatis 的缓存机制使用必须特别谨慎",我想问下,ibatis中cache用到的地方大不大,如果不用会出现哪写不好的清况,因为我知道hibernate中缓冲机制是它的一个亮点,那ibatis中又是怎么样呢?

基本上用处不大(可能会有很多人和我的观点不同) 
ibatis 是个sql拼装器,强调的是直接与数据库打交道,sql的质量决定了最后的效率,再说数据库本身就提供cache。类似many to one , many to many , one to one 的Hibernate的产物,可以直接做成视图,在使用ibatis去查询,这样可以充分的使用使用db自己的cache

 </ dataSource > 
   
 </ transactionManager > 
   
 < sqlMap  resource ="com/wyq/map/userMap.xml" /> 
 
</ sqlMapConfig > 
JNDI的配置大部分都在应用服务器中进行,所以在ibatis中的配置相对简单
(1)jdbc事务控制的JNDI配置
    

 < transctionManager  type ="JDBC" > 
         
 < dataSource  type ="JNDI" > 
             
 < property  name ="DataSource"  value ="java:comp/env/jdbc/myDataSource" /> 
         
 </ dataSource > 
     
 </ transctionManager >

(2)JTA事务控制的JNDI配置
    
 < transctionManager  type ="JTA" > 
         
 < property  name ="UserTransaction"  value ="java:/ctx/con/UserTransaction" /> 
         
 < dataSource  type ="JNDI" > 
             
 < property  name ="DataSource"  value ="java:comp/env/jdbc/myDataSource" /> 
         
 </ dataSource > 
     
 </ transctionManager >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值