天天看點

MyBatis核心元件之SqlSession

SqlSession

在MyBatis中,SqlSession是其和新街口。在MyBatis中有兩個實作類,DefaultSqlSession和SqlSessionManager。DefaultSqlSession是單線程使用的,而SqlSessionManager是在多線程環境下使用的。

SqlSession的作用類似于一個JDBC中的Connection對象,代表着一個連接配接資源的啟用。具體而言,它的作用有3個:

  • 擷取Mapper接口
  • 發送SQL給資料庫
  • 控制資料庫事務

從上一篇文章中我們已經知道了怎麼建立SqlSessionFactory,通過SqlSessionFactory的方法,我們可以直接建立處SqlSession對象,代碼如下:

SqlSession sqlSession = SqlSeesionFactory.openSession();
           

建立出SqlSession對象,我們可以通過SqlSession對象來控制資料庫的事務:

//定義SqlSession
SqlSession sqlSession  = null;
try{
	//打開SqlSession會話
	sqlSession = SqlSessionFactory.openSession();
	//業務邏輯代碼.....
	// 送出事務
	sqlSession.commit();
}catch(Exception ex){
	//事務復原
	sqlSession.rollback();
}finally{
	//在finally語句中確定資源順利關閉
	if(sqlSession != null){
		sqlSession.close();
	}
}
           

上述代碼中,使用commit方法送出事務,出錯後通過rollback復原事務,保證了代碼運作時的資料的一緻性。

繼續閱讀