Hibernate中id设置
“hilo”
<generator class="hilo">
<param name="table">表名</param>
<param name="column">字段名</param>
<param name="max_lo">100</param>
</generator>
</id>
<generator class="seqhilo">
<param name="sequence">hi_value</param>
<param name="max_lo">100</param>
</generator>
</id>
hi: 高值--从数据库wasw100_hilo_tbl读取的next_value值
lo: 低值--hibe自动维护,从0到max_lo(看下面)
max_lo: 配置文件中<param name="max_lo">100</param>的值,这里是100
hibernate根据hilo生成器生成主键的过程:
1.读取并记录数据库的wasw100_hilo_tbl表中next_value字段的值,数据库中此字段值加1保存
2.hibernate取得lo值(0到max_lo-1循环,lo到max_lo时,执行步骤1,然后lo继续从0到max_lo循环)
取得hi值和lo值后,根据下面的公式计算主键值:
hi*(max_lo+1)+lo;
4、“increment”
<column name="id" />
<generator class="increment" />
</id>
“identity”
<column name="id" />
<generator class="identity" />
</id>
<column name="ID" not-null="true" sql-type="NUMBER" unique="true"/>
<generator class="sequence">
<param name="sequence">序列名</param>
</generator>
</id>
“native”
<column name="id" />
<generator class="native" />
</id>
<column name="ID" />
<generator class="uuid.hex" />
</id>
“uuid.string”
本文讲解Hibernate中hbm的generator子元素的一些内置生成器的快捷名字。Generator子元素是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。IDCard与Student形成一对一关联,IDCard端的设置映射配置如下:
<class name="IDCard">
<id name="id" column="Card_id">
<generator class="foreign">
<param name="property">student</param>
</generator>
</id>
<property name="IDNo" unique="true"/>
<property name="nationality"/>
<property name="address"/>
<one-to-one name="student" class="Student" constrained="true"/> </class>
解释:
(1)<generator class="foreign">
(2)<param name="property">student</param>
(3)<one-to-one name="student"
(4)constrained=”true”
该选项最关键的是影响save和delete的先后顺序
没有设定时:总是先操作关联表,后操作本表;
设定以后:添加时先关联表,后本表;删除时先本表,再操作关联表。