Hibernate的generator屬性之意義(轉)

langgufu314發表於2012-04-01

Hibernate的Generator屬性有7種class,本文簡略描述了這7種class的意義和用法。

1、identity:用於MySql資料庫。特點:遞增

  1. < id name="id" column="id">
  2. < generator class="identity"/>
  3. < /id>

注:對於MySql資料庫使用遞增序列時需要在建表時對主鍵指定為auto_increment屬性。

2、sequence:用於Oracle資料庫

  1. < id name="id" column="id">
  2. < generator class="sequence">
  3. < param name="sequence">序列名< /param>
  4. < /generator>
  5. < /id>

3、native:跨資料庫時使用,由底層方言產生。
Default.sequence為hibernate_sequence

  1. < id name="id" column="id">
  2. < generator class="native"/>
  3. < /id>

注:使用native時Hibernate預設會去查詢Oracle中的hibernate_sequence序列。
如果Oracle中沒有該序列,連Oracle資料庫時會報錯。

4、hilo:通過高低位合成id,先建表hi_value,再建列next_value。必須要有初始值。

  1. < id name="id" column="id">
  2. < generator class="hilo">
  3. < param name="table">high_val< /param>
  4. < param name="column">nextval< /param>
  5. < param name="max_lo">5< /param>
  6. < /generator>
  7. < /id>

5、sequencehilo:同過高低位合成id,建一個sequence序列,不用建表。

  1. < id name="id" column="id">
  2. < generator class="hilo">
  3. < param name="sequence">high_val_seq< /param>
  4. < param name="max_lo">5< /param>
  5. < /generator>
  6. < /id>

6、assigned:使用者自定義id;

  1. < id name="id" column="id">
  2. < generator class="assigned"/>
  3. < /id>

7、foreign:用於一對一關係共享主健時,兩id值一樣。

相關文章