Hibernate内置的持久化标识符生成器
2015-10-29 12:26
225 查看
<id
access="field"
name="id"
type=""
column=""
>
<generator class="native"/>
不能确定使用什么样的自增策略的时候可以选用native
<generator class="increment"/>
id字段并未被设置为自增类型,id字段的值是由hibernate自动生成的。主键的值是以1为增量递增的,即使读者在程序中将数据库表中的记录全部删除,在其后新增的记录的主键值仍然是以记录删除前的主键值为基数的,如果将表清空的话则主键值是从1开始的。因为hibernate在设置主键值的时候会先执行 select max(id) from Table。
<generator class="identity"/>
identity标示符生成器的实现机制是由底层数据库而不是由hibernate控制,所以在表清空之后并不会从1开始计数。
<generator class="sequence"/>
<generator class="hilo">
<param name="table">表名</param>
<param name="column">存放新标志符的字段名</param>
<param name="max_lo">100</param>
</generator>
算法第一条的id为0,每循环一圈,hi的值就增加1 ,即0*(100+1)+0;0*(100+1)+1;下一轮:1*(100+1)+0;1*(100+1)+1;
<generator class="assigned"/>
数据库表的主键不再按照某个增量自增,而变成了读者在应用程序中指定的值,必须在把记录插入数据库之前,给主键值赋值。
<generator class="foreign"/>
</id>
//复合主键
<composite-id class="" mapped="true">
<key-property name=""></key-property>
<key-property name=""></key-property>
<key-many-to-one name="factory" class="Factory" column="factory_id"></key-many-to-one>
子元素进行多对一的关联映射,从而建立了具有符合主键的实体和其他实体的多对一的关联。
映射文件类通过<key-many-to-one>建立了与类Factory之间的党项多对一的关联,相应的在类中应该有一个Factory类型的factory属性在表中也应该有一个factory_id的外键。
</composite-id>
使用复合主键的持久化类的时候,必须实现java.io.Serializable接口,另外还必须重载hashCode()方法和equals()方法来实现组合标示符的判断。
class的值表示复合主键被映射为一个新类,类中也包含被定义的联合主键的属性,mapped为true的时候表明在原有的类中仍然包含这两个属性的值,并且也包含映射的类。如果获取值的话,原类.get联合主键的映射类().get联合主键();
access="field"
name="id"
type=""
column=""
>
<generator class="native"/>
不能确定使用什么样的自增策略的时候可以选用native
<generator class="increment"/>
id字段并未被设置为自增类型,id字段的值是由hibernate自动生成的。主键的值是以1为增量递增的,即使读者在程序中将数据库表中的记录全部删除,在其后新增的记录的主键值仍然是以记录删除前的主键值为基数的,如果将表清空的话则主键值是从1开始的。因为hibernate在设置主键值的时候会先执行 select max(id) from Table。
<generator class="identity"/>
identity标示符生成器的实现机制是由底层数据库而不是由hibernate控制,所以在表清空之后并不会从1开始计数。
<generator class="sequence"/>
<generator class="hilo">
<param name="table">表名</param>
<param name="column">存放新标志符的字段名</param>
<param name="max_lo">100</param>
</generator>
算法第一条的id为0,每循环一圈,hi的值就增加1 ,即0*(100+1)+0;0*(100+1)+1;下一轮:1*(100+1)+0;1*(100+1)+1;
<generator class="assigned"/>
数据库表的主键不再按照某个增量自增,而变成了读者在应用程序中指定的值,必须在把记录插入数据库之前,给主键值赋值。
<generator class="foreign"/>
</id>
//复合主键
<composite-id class="" mapped="true">
<key-property name=""></key-property>
<key-property name=""></key-property>
<key-many-to-one name="factory" class="Factory" column="factory_id"></key-many-to-one>
子元素进行多对一的关联映射,从而建立了具有符合主键的实体和其他实体的多对一的关联。
映射文件类通过<key-many-to-one>建立了与类Factory之间的党项多对一的关联,相应的在类中应该有一个Factory类型的factory属性在表中也应该有一个factory_id的外键。
</composite-id>
使用复合主键的持久化类的时候,必须实现java.io.Serializable接口,另外还必须重载hashCode()方法和equals()方法来实现组合标示符的判断。
class的值表示复合主键被映射为一个新类,类中也包含被定义的联合主键的属性,mapped为true的时候表明在原有的类中仍然包含这两个属性的值,并且也包含映射的类。如果获取值的话,原类.get联合主键的映射类().get联合主键();
相关文章推荐
- Daily Scrum (2015/10/28)
- CString和string头文件
- Android编程中图片特效处理方法小结
- R语言知识体系概览
- Ljava.lang.Object;@ba8a1dc 问题
- 夺命雷公狗jquery---36--DWZ左侧折叠菜单实现2
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (二)PHP(PHP-FPM)安装篇
- 有关二叉树的三种遍历方式------先序,中序,后序
- vim常用设置整理
- R语言知识体系概览
- ecshop中的SESSION机制
- POJ3468 A Simple Problem with Integers
- 插入排序的优化,比较插入同步进行
- 【惊爆】马哥linux2016最新实战班课程重磅上线
- 树莓派外接USB摄像头系列一
- Hibernate的多对多映射
- 【摘记】URI 编码和解码
- mysql 循环插入日期递增
- 理解原型对象
- ubantu命令安装banner