????? 本文摘自孫衛琴的《精通Hibernate:Java對象持久化技術詳情》
????? Hibernate有如下5個核心接口:
- Configuration接口:該對象用于配置并且根啟動Hibernate。Hibernate應用通過Configuration實例來指定對象-關系映射文件的位置或動態配置Hibernate的屬性,然后創建SessionFactory實例。
- SessionFactory接口:一個SessionFactory實例對應一個數據存儲源,應用從SessionFactory中獲得Session實例。它具有如下特點:
????????????? 1)它是線程安全的,這意味著它的同一個實例可以被應用的各個線程共享。
??????????????2)它是重量級的,這意味著不能隨意創建或銷毀它的實例。如果應用只訪問一個數據庫,只需創建一個SessionFactory實例,在應用初始化的時候創建該實例。如果應用同時訪問多個數據庫,則需要為每個數據庫創建一個單獨的SessionFactory實例。
??????????????之所以說SessionFactory是重量級的,是因為它需要一個很大的緩存,用來存放預定義的SQL語句以及映射元數據等。用戶還可以為SessionFactory配置一個緩存插件,這個緩存插件被稱為Hibernate的第二級緩存,該緩存用來存放被工作單元讀過的數據,將來其它工作單元可能會重用這些數據,因此這個緩存中的數據能夠被所有工作單元共享,一個工作單元通常對應一個數據庫事務。
- Session接口:該接口是Hibernate應用使用最廣泛的接口。Session也被稱為持久化管理器,提供了和持久化相關的操作,如添加、更新、刪除、加載和查詢對象。Session具有一下特點:
???????????? 1)不是線程安全的,因此在設計軟件架構時,應該避免多個線程共享同一個Session實例;
???????????? 2)Session實例是輕量級的,所謂輕量級,是指它的創建和銷毀不需要消耗太多的資源。這意味著在程序中可以經常創建和銷毀Session對象,例如為每個客戶請求分配單獨的Session實例,或者為每個工作單元分配單獨的Session實例。
?????????????Session有一個緩存,被稱為Hibernate的第一級緩存,它存放被當前工作單元加載的對象。每個Session實例都有自己的緩存,這個Session實例的緩存,這個Session實例的緩存只能被當前工作單元訪問。
- ?Transaction:該接口是Hibernate的數據庫事務接口,它對底層的事務接口做了封裝,底層事務接口包括:JDBC API、JTA(Java Transaction API)、CORBA(Common Object Requet Broker Architecture) API.
???????????? Hibernate應用可通過一致的Transaction接口來聲明事務邊界,這有助于應用在不同環境或容器中移植。
- ?Query和Criteria接口:它們是Hibernate的查詢接口,用于向數據庫查詢對象,以及控制執行查詢的過程。Query實例封裝了一個HQL(Hibernate Query Language)查詢語句,HQL是面向對象的,它引用類名及類的屬性名,而不是表名及表的字段名。Criteria接口完全封裝了基于字符串形式的查詢語句,比Query接口更加面向對象,Criteria接口更擅長于執行動態查詢。
posted on 2007-02-11 23:53
阿蜜果 閱讀(1529)
評論(3) 編輯 收藏 所屬分類:
Hibernate