普陀总校  北桥教学点  颛桥教学点  泗泾教学点  | 设为首页 | 加入收藏 | 官方微信
内威培训
打造“培训+就业”一站式服务品牌!
  • Web前端工程师
  • 电脑艺术设计师
  • 网页设计制作员
  • Java软件开发工程师
banner1

首页>>学员天地

Hibernate的generator标签详解
编辑:simon  阅读:1883次  发布:13-10-01

Hibernate mapping文件中的generator标签用于说明对象标识生成方式,其class值主要有如下几种。
1、identity:自动增长,适用于MySQL、DB2、MS SQL Server,采用由底层数据库生成标识符(自动增长),用于为long、short、int类型生成唯一标识使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)

2、sequence:DB2、Oracle均支持的序列,用于为long、short或int生成唯一标识数。

3、hilo:使用一个高/低位算法生成的long、short或int类型的标识符,给定一个表和字段作为高位值的来源,默认的表是hibernate_unique_key,默认的字段是next_hi。它将id的产生源分成两部分,DB+内存,然后按照算法结合在一起产生id值,可以在很少的连接次数内产生多条记录,提高效率。

4、native:能根据底层数据库系统的类型,自动选择合适的标识符生成器,因此非常适用于跨数据库平台开发,即Hibernate根据底层数据库适配器中的定义,自动采用identify,hilo,sequence的其中一种作为主键生成方式,但是OID必须为long,int,short类型。
    对于 oracle 采用 Sequence 方式,对于MySQL和SQL Server采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管

5、seqhilo:sequence和hilo的结合,hilo的高位由sequence产生,所以也需要底层数据库的支持通过hilo算法实现,但是主键历史保存在Sequence中,适用于支持 Sequence 的数据库,如 Oracle(比较少用)

6、increment:由Hibernate在内存中生成主键,每次增量为1,不依赖于底层的数据库,因此所有的数据库都可以使用,但问题也随之而来,由于是Hibernate生成的,所以只能有一个Hibernate应用进程访问数据库,否则就会产生主键冲突。

7、uuid.hex:使用一个128-bit的UUID算法生成字符串类型的标识符,UUID被编码成一个32位16进制数字的字符串。UUID包含:IP地址、JVM启动时间、系统时间(精确到1/4秒)和一个计数器值(JVM中唯一)hibernate会算出一个128位的唯一值插入

8、assigned:由应用程序负责生成主键标识符,往往使用在数据库中没有代理主键,使用的主键与业务相关的情况。

9、foreign:使用外部表的字段作为主键

10、select:使用触发器生成主键,主要用于早期的数据库主键生成机制,现在已较少使用。



上一篇: hibernate中mapping文件标签详解   下一篇: JAVA面试题2
网络大专、自考本科,学历轻松拿!
©2016-2020 万博体育APP 版权所有
普陀区武宁路1500号中楼2-3层(邮编:200062)
咨询:021-62434966  合作:021-13371929650  就业:021-62434966  传真:021-52662428  电邮:service@snetway.com
《中华人民共和国电信与信息服务业务》经营许可证沪ICP备15002602号