hibernate 的核心配置
-
必須的配置
連接數據庫的基本參數:
驅動類 URL路徑 用戶名 密碼
方言:配置不同的數據庫可以生成不同的sql.
-
可選的配置
顯示sql語句 hibernate.show_sql
格式化sql語句 hibernate.format_sql
自動建表 hibernate.hbm2ddl.auto hbm2ddl ---hb :hibernate / m : mapping / 2 :to 轉換 / ddl : 數據庫建表的語句
none : 不適用hibernate自動建表
create :
create-drop :
update :
validate :
-
映射文件的引入
hibernate 的核心API
Configuration : hibernate的配置對象
Configuration 類的作用是對Hibernate 進行配置,以及對它進行啓動。在Hibernate 的啓動過程中,Configuration 類的實例首先定位映射文檔的位置,讀取這些配置,然後創建一個SessionFactory對象。雖然Configuration 類在整個Hibernate 項目中只扮演着一個很小的角色,但它是啓動hibernate 時所遇到的第一個對象。
SessionFactory : Session 工廠
SessionFactory 內部維護了Hibernate的連接池和hibernate的二級緩存(不講)。是線程安全的對象。一個項目創建一個對象即可。
配置連接池(瞭解)
抽取工具類:
API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節。——百度百科
API : 簡單的說就是別人寫好的工具類,極大的提高了程序員的開發效率,避免重複造輪子。
Hibernate的API一共有6個,分別爲:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通過這些接口,可以對持久化對象進行存取、事務控制。
Session (最重要的一個)類似connection對象是連接對象。
session代碼的是hibernate與數據的鏈接對象,不是線程安全的。所以,這個對象不能設置成全局的。
Session接口負責執行被持久化對象的CRUD操作(CRUD的任務是完成與數據庫的交流,包含了很多常見的SQL語句)。但需要注意的是Session對象是非線程安全的。同時,Hibernate的session不同於JSP應用中的HttpSession。這裏當使用session這個術語時,其實指的是Hibernate中的session,而以後會將HttpSession對象稱爲用戶session。
get方法和load方法的區別?
get方法 (使用的相對來說多一些)
採用的是即時加載,執行到這行代碼的時候,就會馬上發送sql語句去查詢。
查詢後返回的是真實對象本身。
查詢一個找不到的對象的時候會返回null
load方法
採用的是延遲加載,懶加載。執行到這行代碼的時候,不會發送sql語句,當真正使用這個對象除了id以外的屬性時纔會發送sql查詢。
查詢後返回的是一個代理對象。(沒有使用jdk的動態代理,使用的是一個第三方的代理javassist技術來產生的代理。)
查詢一個找不到的對象的時候會報異常ObjectNotFoundException()
修改的操作:
刪除的方法:
void delete(Object obj);
saveOrUpdate(Object obj) 保存或者更新的方法。
查詢所有:
Transaction
Transaction 接口是一個可選的API,可以選擇不使用這個接口,取而代之的是Hibernate 的設計者自己寫的底層事務處理代碼。 Transaction 接口是對實際事務實現的一個抽象,這些實現包括JDBC的事務、JTA 中的UserTransaction、甚至可以是CORBA 事務。之所以這樣設計是能讓開發者能夠使用一個統一事務的操作界面,使得自己的項目可以在不同的環境和容器之間方便地移植。