1. 程式人生 > >【hibernate】hibernate總結

【hibernate】hibernate總結

(1)xx.hbm.xml檔案配置:

<id>元素的<generator>子元素指定物件識別符號生成器(各種),它負責為OID生成唯一識別符號。 <property>子元素設定類的屬性和表的欄位的對映。 <property>元素元素包括name、type、column、length和not-null name指定物件屬性名,type指定hibernate對映型別(java型別和sql型別的橋樑) column指定對應的列名,length指定長度,not-null表明屬性不能為空,當持久化一個物件時,會先檢查它的name屬性是否為null,如果為null,就會丟擲異常。

(2)hibernate的初始化

1.先建立一個configuration類的例項,configuration類的構造方法把預設檔案路徑下hibernate.properties配置檔案中的配置資訊讀入記憶體: 2.呼叫Configuration類的addClass(xx.class)方法。 3.呼叫Configuration類的buildSessionFactory()方法 註解:sessionFactory物件建立後,該物件不和Configuration物件關聯,因此,如果再修改Configuration物件包含的配置資訊,不會對SessionFactory物件的行為有任何影響。 sesseionFactory的快取其實指的是java物件的屬性佔用的記憶體空間。

(3)hibernate檢索方式

1.HQL檢索方式

HQL是面向物件的查詢語言,它和SQL查詢語言有些相似,具有以下功能: 在查詢語句中設定各種查詢條件。 支援投影查詢,即僅檢索出物件的部分屬性。 支援分頁查詢。 支援連線查詢。 支援分組查詢,允許使用having和group by關鍵字。 提供內建聚集函式,入sum()、min()和max()。 能夠呼叫使用者定義的SQL函式或者標準的SQL函式。 支援子查詢,即嵌入式查詢。 支援動態繫結引數。 支援多型查詢,from後跟的持久化類名,不僅會查詢出該持久化類的全部例項,還會查詢出該類的子類的全部例項。

HQL from子句是最基本的HQL語句,from關鍵字後緊跟持久化類的類名。 HQL select子句用於確定選擇出的屬性,當然select選擇的屬性必須是from後持久化類包含的屬性,例如select p.name from Person as p HQL也支援在選出的屬性上使用聚集函式。例如:select max(p.age) from Person as p

步驟:

  1. 通過session的createQuery()方法建立一個Query物件,它包含一個HQL查詢語句。HQL查詢語句可以包含命名引數,如“customerName”
  2. 動態引數繫結。Query介面提供了給各種型別的命名引數賦值的方法,例如setString()方法用於為字串型別的customerName命名引數賦值。
  3. 呼叫Query的list()方法執行查詢語句。該方法返回java.util.List型別的查詢結果,在List集合中存放了符合查詢條件的持久化物件。

2.QBC檢索方式

步驟

  1.  呼叫Session介面的createCriteria()方法建立一個Criteria物件。
  2.  設定查詢條件。Restrictions類提供了一系列用於設定查詢條件的靜態方法。這些靜態方法返回Criterion例項,每個Criterion例項代表了一個查詢條件。Criteria介面的add()方法用於加入查詢條件。
  3. 呼叫Criteria介面的list()方法執行查詢語句。該方法返回java.util.list型別的查詢結果,在List集合中存放了符合查詢條件的持久化物件。

3.本地SQL檢索方式

採用HQL或QBC檢索方式時,Hibernate會生成標準的SQL查詢語句,適用於所有的資料庫平臺,因此這種檢索方式都是跨平臺的。 當然Hibernate提供了本地的SQL檢索方式,來根據底層資料庫的SQL方言,來生成一些特殊的查詢語句。

本地SQL檢索方式與HQL檢索方式都使用Query介面,區別在於本地SQL檢索方式通過Session的createSQLQuery()方法來建立SQLQuery物件,這個方法的引數指定了一個SQL查詢語句,該語句可以使用本地資料庫的SQL方言。