案例:http://blog.csdn.net/jiuqiyuliang/article/details/39380465java
對象關係映射框架,它對JDBC進行了輕量級的對象封裝,可使用對象編程思惟來操縱數據庫,實現對象持久化和事務控制。數據庫
Hibernate框架編程
核心類和接口緩存
Session接口安全
非線程安全,負責執行被持久化對象的CRUD操做框架
save() 臨時對象->持久化對象分佈式
Session Factory接口.net
負責初始化Hibernate線程
Transaction接口對象
可選接口,對實際事務實現的一個抽象,這些實現包括JDBC的事務、JTA 中的User Transaction、甚至能夠是CORBA 事務。
Query接口
有兩種表達方式:HQL語言或本地數據庫的SQL語句。
常常被用來綁定查詢參數、限制查詢記錄數量,並最終執行查詢操做。
Criteria接口
同Query,輕量級,不能在Session以外使用
Configuration類
對Hibernate 進行配置,負責啓動Hibernate,再建立一個Session Factory對象
核心對象
JDBC Java DataBase Connectivity java數據庫鏈接
l 是一種用於執行SQL語句的Java API,能夠爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。
l 經常使用類:Driver Manager、Connection、Statement / Prepared Statement / Callable Statement、Result Set
JNDI Java Naming and Directory Interface Java命名和目錄接口
JNDI可訪問的現有的目錄及服務有:DNS、Novell目錄服務、LDAP(Lightweight Directory Access Protocol輕型目錄訪問協議)、 CORBA對象服務、文件系統、Windows XP/2000/NT/Me/9x的註冊表、RMI、DSML v1&v二、NIS。
l 是Java對象持久化的新的規範,也是一個用於存取某種數據倉庫中的對象的標準化API。
l JDBC只是面向關係數據庫(RDBMS);JDO更通用,提供到任何數據底層的存儲功能,好比關係數據庫、文件、XML以及對象數據庫(ODBMS)等等,使得應用可移植性更強。
l 經過訪問JDO Instance , 達到訪問JDO Instance 所表明的數據對象,包括:ERP,數據庫系統等,使數據的存儲介質對於應用的開發人員徹底透明。
JTA(Java Transaction API)和JTS(Java Transaction Services)——爲J2EE平臺提供了分佈式事務服務(distributed transaction)
對好比下:
DAO
JTA
緩存管理
第一級別的緩存,是Session級別的緩存,它是屬於事務範圍的緩存。
當應用程序調用Session的save()、update()、saveOrUpdate()、get()或load(),以及調用查詢接口的 list()、iterate()或filter()方法時,若是在Session緩存中還不存在相應的對象,Hibernate就會把該對象加入到第一級緩存中。
當清理緩存時,Hibernate會根據緩存中對象的狀態變化來同步更新數據庫。 Session爲應用程序提供了兩個管理緩存的方法:
evict(Object obj):從緩存中清除參數指定的持久化對象。
clear():清空緩存中全部持久化對象。
第二級別的緩存是Session Factory級別的緩存,它是屬於進程範圍或羣集範圍的緩存。
** 查詢緩存,依賴於第二級緩存。
延遲加載
get不支持延遲加載,load支持延遲加載。
查詢語言
HQL 根據面向對象的查詢語言檢索對象
導航對象圖 根據已經加載的對象,導航到其餘對象
OID 根據對象標識來檢索對象
QBC 根據條件查詢接口(Criteria 接口、Criterion 接口和Expression 類)實現對數據的檢索
原生SQL 根據數據庫的SQL 查詢語句檢索對象