mybatis執行原理總結
阿新 • • 發佈:2018-12-20
首先jdbc是如何操作事務的?
是通過連線進行設定,預設是自動提交
try{
con.setAutoCommit(false);//開啟事務
......
con.commit();//try的最後提交事務
} catch() {
con.rollback();//回滾事務
}
mybatis使用的session是如何進行操作連線操作事務的
每個sqlsession是一個數據庫會話,sqlsession是執行緒不安全的,多執行緒訪問同一sqlsession物件會出現執行緒安全問題。
mybatis原始碼解析
InputStream inputStream = null; inputStream = Resources.getResourceAsStream("mybatis.xml"); SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream); sqlSession =sqlSessionFactory.openSession(); courseDaoMapper = sqlSession.getMapper(CourseDaoMapper.class);
分析SqlsessionFactory,是個介面,查下看實現類
進入DefaultSqlSessionFactory
檢視Transaction 介面類
進入JdbcTransaction類
該類的大概功能是:負責獲取連線、設定是否進行自動提交作用
檢視該類的方法
關於增刪改的操作,獲取connection是在執行sqlsession的增刪改操作的時候才打開連線
DefaultSqlSession的更新方法,呼叫了Executor的uptate方法
Executo