hibernate主键生成策略
来源:互联网 发布:哪里可以买到淘宝账号 编辑:程序博客网 时间:2024/06/06 00:34
原贴地址:<a href=“http://www.cnblogs.com/caoyc/p/5596647.html”></a> http://www.cnblogs.com/caoyc/p/5596647.html
Hibernate各种主键生成策略与配置详解
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.mypro.id"> <class name="User" table="user"> <id name="id" column="Id" type="int"> <generator class="navite"></generator> </id> <property name="name" column="name" type="string"></property> </class></hibernate-mapping>通过配置可以看到,我们有个实体类User,该类有一个id和name的属性与数据库中user表的id和name字段分别对应。其中
<generator class="navite"></generator>定义了主键的生成方式,下面我们将会介绍到我们常用的主键生成方式
1、assigned
主键由外部程序负责生成,在 save() 之前必须指定一个,Hibernate不负责维护主键生成。也就是可以每次指定主键。该方式不推荐
2、increment
这种方式在每次插入前,需要通过“select max(主键) from 表名 ”这种方式先查询最大ID,然后通过ID+1来作为新的主键值。这种方式也不推荐,因为这样会出现线程安全问题。
3、identity
identity由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,使用identity的前提条件是底层数据库支持自动增长字段类型,如DB2、SQL Server、MySQL、Sybase和HypersonicSQL等,Oracle这类没有自增字段的则不支持。
4、sequence
采用数据库提供的sequence机制生成主键,需要数据库支持sequence。如oralce、DB、SAP DB、PostgerSQL、McKoi中的sequence。MySQL这种不支持sequence的数据库则不行
5、hilo
hilo(高低位方式high low)是hibernate中最常用的一种生成方式,需要一张额外的表保存hi的值。保存hi值的表至少有一条记录(只与第一条记录有关),否则会出现错误。可以跨数据库。
6、native
native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用sequence。
7、uuid
UUID:Universally Unique Identifier,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字,标准的UUID格式为:
xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)
- hibernate主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- hibernate 主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- hibernate主键生成策略
- hibernate主键生成策略
- Hibernate主键生成策略
- hibernate主键生成策略
- hibernate主键生成策略
- Hibernate主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- hibernate主键生成策略
- hibernate主键生成策略
- HIBERNATE主键生成策略
- 海航陈峰回忆创业史:那是一个非常有趣的时代!
- 今天开通了博客
- bzoj 2599 [IOI2011]Race
- matlab R2016a 安装libsvm 64位windows 各种问题汇总
- 分页查询的简单实现
- hibernate主键生成策略
- android zip压缩base64解密加密
- HTML5&CSS3初学者指南(1) – 编写第一行代码
- SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系
- PHP输出字符串的最大回文
- webView的常见设置及简单调用
- 产品小唔
- 服务器上安装jdk
- java 数组的使用