ibatis筆記

IBatis是個半自動的ORM實現,因爲裏面的sql是自己寫的,可以增加了程序的靈活性。JavaBean對象自動映射到sql。
它是MVC裏dao層的一種對數據庫操作的框架,它解決了操作數據庫的代碼重複,使代碼的可讀性更加清晰。它提供了數據映射功能。
 1,用類加載器加載一個屬性文件。
 用類加載器獲取一個字符串,加載一個文件。因爲類加載器和我們的class文件是在同一個目錄下。
 通過類加載器去加載一個配置文件,不需要指定絕對路徑,因爲類加載器和我們的class文件是在同一個目錄下。
 對xml文件的每個節點調用了一個匿名類。把節點的屬性轉換成對象的每一個屬性。
 2,用sax對文件進行解析。解析完返回sqlMapper。
 3,它的執行過程
 它使用了線程本地變量,這樣的好處就是爲了解決線程併發的現象。因爲它在本地有一個它的副本,所以它的set,
 get不需要傳入key值,因此兩條線程互訪的時候,只能各調各的,避免了以後出現的線程安全問題。而以前我們需
 要使用同步來達到併發,這樣可以會導致線程死鎖,性能下降。
ThreadLocal它不是一個Thread,而是Thread的局部變量。
 在這裏用到了事物,事物是爲保證數據的完整性,一致性,持久性。返回了一個事物管理器,然後啓動裏面的事物,
 拿到當前的事物的狀態,看事物是否啓動了,如果沒啓動,就直接拋出異常終結操作。接着它會通過connection設定
 事物的隔離級別。在這裏我知道了所有JDBC默認的事物都是自動提交的,所以IBatis會把所有的默認事物取消掉,如
 果不取消的,那麼代碼執行一行就自動提交上去了。
在這裏它使用代理,它在這裏就是管理事物的,如啓動事物,提交事物,關閉事物等的事情,代理起到一個承上啓下的作用。
isAssignableFrom:判斷這個類型是不是這個類的實現,也就是說是不是一個類型。
在執行sql語句的那個方法中,並沒有用到職責鏈模式,所以耦合度是非常的高的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章