鍍金池/ 教程/ Java/ Hibernate生成器類
Hibernate繼承映射
Hibernate每個(gè)子類一張表(使用XML文件)實(shí)例
Hibernate快速入門
Hibernate使用注釋
Hibernate使用xml文件的每個(gè)類層次一張表
Hibernate命名查詢
Hibernate每個(gè)層次類一張表(使用注釋)
Hibernate組件映射
Hibernate事務(wù)管理
Hibernate二級緩存
集合映射Set(使用xml文件)
Hibernate每個(gè)具體類一張表映射(使用XML)
集合映射中的映射列表(使用xml文件)
Hibernate使用Log4j日志記錄(使用properties文件)
Hibernate集合映射
集合Map映射(使用xml文件)
集合Set映射一對多(使用xml文件)
Hibernate查詢語言(HQL)
Hibernate入門程序
Hibernate標(biāo)準(zhǔn)查詢語言
Hibernate使用Log4j日志記錄(使用xml文件)
Hibernate教程
Hibernate體系結(jié)構(gòu)
Hibernate生成器類
Hibernate通過many-to-one元素的一對一映射
集合Map多對多映射(使用xml文件)
Web應(yīng)用程序使用Hibernate
Hibernate一對多映射列表實(shí)例(使用xml文件)
Hibernate通過one-to-one元素的一對一映射
Hibernate每個(gè)子類一張表(使用注釋)實(shí)例
集合映射中的映射包(使用xml文件)
通過Bag一對多映射示例(使用xml文件)
Hibernate緩存
Hibernate每個(gè)具體類一張表映射(使用注釋)

Hibernate生成器類

在Hibernate中,id元素的<generator>子元素用于生成持久化類的對象的唯一標(biāo)識符。 Hibernate框架中定義了許多生成器類。

所有的生成器類都實(shí)現(xiàn)了org.hibernate.id.IdentifierGenerator接口。 應(yīng)用程序員可以通過實(shí)現(xiàn)IdentifierGenerator接口來創(chuàng)建自己的生成器類。 Hibernate框架提供了許多內(nèi)置的生成器類:

  1. assigned
  2. increment
  3. sequence
  4. hilo
  5. native
  6. identity
  7. seqhilo
  8. uuid
  9. guid
  10. select
  11. foreign
  12. sequence-identity

1. assigned

如果沒有使用<generator>元素,assigned是默認(rèn)的生成器策略。在這種情況下,應(yīng)用程序?yàn)閷ο蠓峙?code>ID。 例如:

....  
 <hibernate-mapping>  
  <class ...>  
    <id ...>  
     <generator class="assigned"></generator>  
    </id>  

    .....  

  </class>  
 </hibernate-mapping>

2. increment

當(dāng)沒有其他進(jìn)程將數(shù)據(jù)插入此表時(shí),才會生成唯一的ID。 它生成short,intlong型標(biāo)識符。 第一個(gè)生成的標(biāo)識符通常為1,然后每次遞增為1。語法:

....  
 <hibernate-mapping>  
  <class ...>  
    <id ...>  
     <generator class="increment"></generator>  
    </id>  

    .....  

  </class>  
 </hibernate-mapping>

3. sequence

它使用數(shù)據(jù)庫的順序序列。如果沒有定義序列,它會自動(dòng)創(chuàng)建一個(gè)序列。 在Oracle數(shù)據(jù)庫的情況下,它將創(chuàng)建一個(gè)名為HIBERNATE_SEQUENCE的序列。 在Oracle,DB2,SAP DB,Postgre SQL或McKoi的情況下,它使用序列(sequence),但在interbase中使用生成器。
語法:

.....  
 <id ...>  
  <generator class="sequence"></generator>  
 </id>  
 .....

要定義自己的序列,請使用generatorparam 子元素。

.....  
 <id ...>  
  <generator class="sequence">  
      <param name="sequence">your_sequence_name</param>  
  </generator>  
 </id>  
 .....

4. hilo

它使用高低算法來生成short,intlong類型的id語法

.....  
 <id ...>  
  <generator class="hilo"></generator>  
 </id>  
 .....

5. native

它使用標(biāo)識,序列或希洛取決于數(shù)據(jù)庫供應(yīng)商。 語法

.....  
 <id ...>  
  <generator class="native"></generator>  
 </id>  
 .....

6. identity

它用于Sybase,Mysql,MS SQL Server,DB2和Hypersonic SQL以支持id列。 返回的ID類型為short,intlong。

7. seqhilo

它在指定的序列名稱上使用高低算法。 返回的ID類型為short,intlong。

8. uuid

它使用128UUID算法生成id。 返回的IDString類型,在網(wǎng)絡(luò)中是唯一的(因?yàn)槭褂昧薎P)。 UUID以十六進(jìn)制數(shù)字表示,長度為32。

9. guid

它使用由字符串類型的數(shù)據(jù)庫生成的GUID。 它適用于MS SQL Server和MySQL。

10. select

它使用數(shù)據(jù)庫觸發(fā)器返回主鍵。

11. foreign

它使用另一個(gè)關(guān)聯(lián)對象的id,主要用于<一對一>關(guān)聯(lián)。

12. sequence-identity

它使用特殊的序列生成策略。 僅在Oracle 10g驅(qū)動(dòng)程序中支持。