<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    superwei

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    Hibernate的原理與配置快速入門(2)

      理解Hibernate的架構

      當你想用Hibernate開發自己的基于持久層的應用時,第一件事情應當是熟悉它的編程接口。Hibernate的API接口設計得盡量簡潔明了,以方便開發人員。然而實際上由于ORM的復雜性,它的API一般都不可能設計得很簡單。但是別擔心,你沒有必要一下子了解所有的Hibernate的API接口。下面這張圖描述了Hibernate在應用層和持久層中的一些重要的接口類:

      在上圖中,我們將應用層放在了持久層的上部,實際上在傳統的項目中,應用層充當著持久層的一個客戶端角色。但對于一些簡單的項目來說,應用層和持久層并沒有區分得那么清楚,這也沒什么,在這種情況下你可以將應用層和持久層合并成了一層。

      在上圖中,Hibernate的接口大致可以分為以下幾種類型:

      · 一些被用戶的應用程序調用的,用來完成基本的創建、讀取、更新、刪除操作以及查詢操作的接口。這些接口是Hibernate實現用戶程序的商業邏輯的主要接口,它們包括Session、Transaction和Query。

      · Hibernate用來讀取諸如映射表這類配置文件的接口,典型的代表有Configuration類。

      · 回調(Callback)接口。它允許應用程序能對一些事件的發生作出相應的操作,例如Interceptor、Lifecycle和Validatable都是這一類接口。

      · 一些可以用來擴展Hibernate的映射機制的接口,例如UserType、CompositeUserType和IdentifierGenerator。這些接口可由用戶程序來實現(如果有必要)。

      Hibernate使用了J2EE架構中的如下技術:JDBC、JTA、JNDI。其中JDBC是一個支持關系數據庫操作的一個基礎層;它與JNDI和JTA一起結合,使得Hibernate可以方便地集成到J2EE應用服務器中去。

      在這里,我們不會詳細地去討論Hibernate API接口中的所有方法,我們只簡要講一下每個主要接口的功能,如果你想了解得更多的話,你可以在Hibernate的源碼包中的net.sf.hibernate子包中去查看這些接口的源代碼。下面我們依次講一下所有的主要接口:

      核心接口

      以下5個核心接口幾乎在任何實際開發中都會用到。通過這些接口,你不僅可以存儲和獲得持久對象,并且能夠進行事務控制。

      Session接口

      Session接口對于Hibernate 開發人員來說是一個最重要的接口。然而在Hibernate中,實例化的Session是一個輕量級的類,創建和銷毀它都不會占用很多資源。這在實際項目中確實很重要,因為在客戶程序中,可能會不斷地創建以及銷毀Session對象,如果Session的開銷太大,會給系統帶來不良影響。但值得注意的是Session對象是非線程安全的,因此在你的設計中,最好是一個線程只創建一個Session對象。

      在Hibernate的設計者的頭腦中,他們將session看作介于數據連接與事務管理一種中間接口。我們可以將session想象成一個持久對象的緩沖區,Hibernate能檢測到這些持久對象的改變,并及時刷新數據庫。我們有時也稱Session是一個持久層管理器,因為它包含這一些持久層相關的操作,諸如存儲持久對象至數據庫,以及從數據庫從獲得它們。請注意,Hibernate 的session不同于JSP應用中的HttpSession。當我們使用session這個術語時,我們指的是Hibernate中的session,而我們以后會將HttpSesion對象稱為用戶session。

      SessionFactory 接口

      這里用到了一個設計模式――工廠模式,用戶程序從工廠類SessionFactory中取得Session的實例。

      令你感到奇怪的是SessionFactory并不是輕量級的!實際上它的設計者的意圖是讓它能在整個應用中共享。典型地來說,一個項目通常只需要一個SessionFactory就夠了,但是當你的項目要操作多個數據庫時,那你必須為每個數據庫指定一個SessionFactory。
    SessionFactory在Hibernate中實際起到了一個緩沖區的作用,它緩沖了Hibernate自動生成的SQL語句和一些其它的映射數據,還緩沖了一些將來有可能重復利用的數據。

      Configuration 接口

      Configuration接口的作用是對Hibernate進行配置,以及對它進行啟動。在Hibernate的啟動過程中,Configuration類的實例首先定位映射文檔的位置,讀取這些配置,然后創建一個SessionFactory對象。

      雖然Configuration接口在整個Hibernate項目中只扮演著一個很小的角色,但它是啟動hibernate時你所遇到的每一個對象。

      Transaction 接口

      Transaction接口是一個可選的API,你可以選擇不使用這個接口,取而代之的是Hibernate的設計者自己寫的底層事務處理代碼。 Transaction接口是對實際事務實現的一個抽象,這些實現包括JDBC的事務、JTA中的UserTransaction、甚至可以是CORBA事務。之所以這樣設計是能讓開發者能夠使用一個統一事務的操作界面,使得自己的項目可以在不同的環境和容器之間方便地移值。

      Query和Criteria接口

      Query接口讓你方便地對數據庫及持久對象進行查詢,它可以有兩種表達方式:HQL語言或本地數據庫的SQL語句。Query經常被用來綁定查詢參數、限制查詢記錄數量,并最終執行查詢操作。

      Criteria接口與Query接口非常類似,它允許你創建并執行面向對象的標準化查詢。

      值得注意的是Query接口也是輕量級的,它不能在Session之外使用。

      Callback 接口

      當一些有用的事件發生時――例如持久對象的載入、存儲、刪除時,Callback接口會通知Hibernate去接收一個通知消息。一般而言,Callback接口在用戶程序中并不是必須的,但你要在你的項目中創建審計日志時,你可能會用到它。

    posted on 2005-10-31 11:30 小辭猬 閱讀(312) 評論(0)  編輯  收藏 所屬分類: JAVA

    主站蜘蛛池模板: 国产成人亚洲毛片| 久久精品免费全国观看国产| 国产色爽免费视频| 亚洲国产av一区二区三区丶| 亚洲国产成人手机在线电影bd| 免费看无码特级毛片| 亚洲线精品一区二区三区 | 亚洲无码精品浪潮| 另类小说亚洲色图| 亚洲第一成人影院| 亚洲精品国产成人中文| 一区二区三区观看免费中文视频在线播放 | 久久亚洲高清综合| 亚洲一线产区二线产区区| 亚洲第一成年免费网站| 亚洲一区二区三区写真| 国产日产成人免费视频在线观看| 亚洲精品理论电影在线观看| 日韩精品无码一区二区三区免费 | 大胆亚洲人体视频| 亚洲另类小说图片| 成年女人免费v片| 亚洲国产精品线在线观看| 亚洲av成人无码网站…| 全部免费毛片免费播放| 一级日本高清视频免费观看 | 久草视频在线免费看| 内射干少妇亚洲69XXX| 岛国岛国免费V片在线观看| 久久精品国产精品亚洲精品| 最近中文字幕免费2019| 亚洲精品天堂在线观看| 57pao一国产成视频永久免费| 亚洲人成网男女大片在线播放| 久久青草免费91线频观看不卡| 亚洲日本乱码一区二区在线二产线| 成人黄动漫画免费网站视频 | 亚洲欧洲国产精品久久| 国产免费卡一卡三卡乱码| 亚洲欧美成人综合久久久| 免费看黄视频网站|