1. 程式人生 > >Hibernate框架的主鍵生成策略

Hibernate框架的主鍵生成策略

如果 維護 自己 db2 取值 identity 返回 nat 數字

  在Hibernate中,id元素的<generator>子元素用於生成持久化類的對象的唯一標識符,也就是主鍵。Hibernate框架中定義了許多主鍵生成策略類,也叫生成器類。所有的生成器類都實現了org.hibernate.id.IdentifierGenerator接口。通過實現IdentifierGenerator接口來創建自己的生成器類。Hibernate框架提供了許多內置的生成器類:

  • assigned
  • increment
  • sequence
  • hilo
  • native
  • identity
  • seqhilo
  • uuid
  • guid
  • select
  • foreign
  • sequence-identity

1、assigned

如果沒有使用<generator>元素,assigned是默認的生成器策略。在這種情況下,應用程序為對象分配ID。

2、increment

當沒有其他進程將數據插入此表時,它才會生成唯一的ID。它生成short,int或long型標識符。第一個生成的標識符通常為1,然後每次遞增為1。

3.、sequencce

  它使用數據庫的順序序列。如果沒有定義序列,它會自動創建一個序列。在Oracle數據庫的情況下,它將創建一個名為HIBERNATE_SEQUENCE的序列。在DB2、SAP DB、Postgre SQL 或McKoi的情況下,它使用序列(sequence),但在interbase中使用生成器。使用sequence類型時,<generator>元素中藥使用<param>子元素指定序列名稱。

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

4.hilo

它使用高低算法來生成short,int和long類型的id。

5、native

它使用標識、序列或希洛取決於數據庫供應商。

6、indentity

  它用於Sybase、Mysql、MS SQL Server、DB2和Hypersonic SQL 支持id列。返回的ID類型為short、int或long。 

7、seqhilo

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

8.uuid

  它使用128位UUID算法生成id。返回的ID是String類型,在網絡中是唯一的(因為使用了IP)。UUID以十六進制數字標識,長度為32。

9、guid

  它使用由字符串類型的數據庫生成的GUID。它適用於MS SQL Server 和MySQL。

10、select

  它使用數據庫觸發器返回主鍵。

11、foreign

  它使用另一個關聯對象的id,主要用於一對一關聯。 

12、sequence-identity

  它使用特殊的序列生成策略。僅在Oracle 10g驅動程序中支持。

備註:hilo和seqhilo生成策略的高低算法即hi/lo算法。hi:高值------從數據庫取得的那個值;lo:低值------hibernate自動維護,取值1到max_low;max_low:映射文件中配置的那個值。

  

Hibernate框架的主鍵生成策略