transactionManager的type與dataSource的type


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

 

1
2
3
4
</ dataSource >
     </ transactionManager >
     < sqlMap  resource = "com/wyq/map/userMap.xml"  />
  </ sqlMapConfig >

  


JNDI的配置大部分都在應用服務器中進行,所以在ibatis中的配置相對簡單
(1)jdbc事務控制的JNDI配置
    

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

  


(2)JTA事務控制的JNDI配置
    
 
1
2
3
4
5
6
< 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 >


免責聲明!

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



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