您的位置:首页 > 其它

Hibernate的主键生成器generator说明

2011-02-21 13:43 274 查看
设置主键
HIbernate主键详解------Native
Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式
特点:根据不同的底层数据库采用不同的主键生成方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式

Hibernate的主键生成器generator说明

关键字: hibernate 1、如果主键字段为自增类型。 那么对应的.hbm.xml文件中的id字段的xml声明, 应该这么写: <generator class="native" /> 例如: <id column="user_id" name="Id" type="integer" > <generator class="native" /> </id> 其实这个native并非实际的类型,而是hiberante根据 当前使用的数据库,自动使用对应的类型。 例如:如果sqlserver,native就对应identity 见Hiberante参考: native(本地) 根据底层数据库的能力选择identity, sequence 或者hilo中的一个。 2、如果主键字段不设置为自增,但是是int型的。 可以使用increment,由hibernate产生主键。 <generator class="increment" /> 不过这种方法,对于并发量大的应用,似乎最好不要采用。 见hiberante参考: increment(递增) 用于为long, short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。 3、如果使用uuid.hex产生的随机32位数最为主键。 那么数据库的id字段类型为char,长度为32 hbm.xml中写为: <generator class="uuid.hex" /> 另外,uuid.string也是功能类似。 uuid.hex产生的是32位的16进制数字的字符串。 而uuid.string产生的是16个字符长的任意ASCII字符组成的字符串 见参考: uuid.hex 用一个128-bit的UUID算法生成字符串类型的标识符。在一个网络中唯一(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。 uuid.string 使用同样的UUID算法。UUID被编码为一个16个字符长的任意ASCII字符组成的字符串。不能使用在PostgreSQL数据库中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: