Hibernate学习笔记--核心编程
參考資料:Java Web核心框架
http://blog.csdn.net/lsh6688/article/details/7611950
?補充:ThreadLocal的使用:http://www.cnblogs.com/gnivor/p/4440776.html
Part 1.hibernate核心接口層次架構關系
圖:hibernate核心接口層次架構關系
上圖中,Hibernate的接口大致可以分為以下幾種類型:
1. 基本操作類:一些被用戶的應用程序調用的,用來完成基本的創建、讀取、更新、刪除操作以及查詢操作的接口。這些接口是Hibernate實現用戶程序的商業邏輯的主要接口,它們包括Session、Transaction和Query。
2. 配置類:Hibernate用來讀取諸如映射表這類配置文件的接口,典型的代表有Configuration類。
3. 回調(Callback)接口:它允許應用程序能對一些事件的發生作出相應的操作,例如Interceptor、Lifecycle和Validatable都是這一類接口。?
4. 一些可以用來擴展Hibernate的映射機制的接口:例如UserType、CompositeUserType和IdentifierGenerator。這些接口可由用戶程序來實現(如果有必要)。
Hibernate使用了J2EE架構中的如下技術:JDBC、JTA、JNDI。其中JDBC是一個支持關系數據庫操作的一個基礎層;它與JNDI和JTA一起結合,使得Hibernate可以方便地集成到J2EE應用服務器中去。
?
Part 2.常用核心接口及相互關系
常用核心接口有6個:Session、SessionFactory、Configuration、Transaction、Query、Criteria
圖:接口類的產生關系
?
Session接口:
Session接口 Session 接口對于Hibernate 開發人員來說是一個最重要的接口。然而在Hibernate中,實例化的Session是一個輕量級的類,創建和銷毀它都不會占用很多資源。這在實際項目中確實很重要,因為在客戶程序中,可能會不斷地創建以及銷毀Session對象,如果Session 的開銷太大,會給系統帶來不良影響。但是Session對象是非線程安全的,因此在你的設計中,最好是一個線程只創建一個Session對象。 session可以看作介于數據連接與事務管理一種中間接口。我們可以將session想象成一個持久對象的緩沖區,Hibernate能檢測到這些持久對象的改變,并及時刷新數據庫。我們有時也稱Session是一個持久層管理器,因為它包含這一些持久層相關的操作, 諸如存儲持久對象至數據庫,以及從數據庫從獲得它們。需要注意的是,Hibernate的session不同于JSP 應用中的HttpSession。當我們使用session這個術語時,我們指的Hibernate 中的session,而我們以后會將HttpSesion 對象稱為用戶session。
?
SessionFactory接口:
SessionFactroy接口負責初始化Hibernate。它充當數據存儲源的代理,并負責創建Session對象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級的,因為一般情況下,一個項目通常只需要一個SessionFactory就夠,當需要操作多個數據庫時,可以為每個數據庫指定一個SessionFactory。
?
Transaction接口:
Transaction接口負責事務相關的操作,一般在Hibernate的增刪改中出現,但是使用Hibernate的人一般使用Spring去管理事務。
?
Query和Criteria接口:
Query和Criteria接口負責執行各種數據庫查詢。它可以使用HQL語言或SQL語句兩種表達方式。它的返回值一般是List。需要自己轉換。
?
Configuration接口:
Configuration對象用于配置并啟動Hibernate。Hibernate應用通過Configuration實例來指定對象—關系映射文件的位置或者動態配置Hibernate的屬性,然后創建SessionFactory實例。在Hibernate啟動過程中,Configuration類的實例首先定位映射文檔位置、讀取配置,然后創建SessionFactory實例。我們可以查看Configuration的源代碼,它的configure()方法是這樣實現的:
public Configuration configure() throwsHibernateException {configure("/hibernate.cfg.xml" );//此處指定了ORM文件的位置return this; }?
轉載于:https://www.cnblogs.com/gnivor/p/4440184.html
總結
以上是生活随笔為你收集整理的Hibernate学习笔记--核心编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EMCA和EMCTL的简单用法
- 下一篇: sysbench 一些选项参数记录