hibernate 中mysql的id生成策略

数据库的规划和操作号码大全中,咱们一般会给表建立长尾关键词挖掘工具的主键。

主键,可以分为天然主键和署理主键。

天然主键表明:选用具有事务逻辑意义的字段作为表的主键。比方在用户信息表中,选用用户的身份证号码作为主键。可是这样一来,跟着事务逻辑的变化,主键就有可能要更改。比方,假定哪天身份证号码升级成19,2位,那。。。。。。。

署理主键:在表中人为的添加一个字段,该字段并没有表明任何的事务逻辑,仅仅用来标识一行数据。比方说在用户信息表中,添加一个用户ID的字段。用来表明该条用户信息的记录。

一般情况下,用的对比多的是署理主键的方法。并且,咱们习气于于让该主键字段可以主动增加,来保证其仅有性。可是,不一样的数据库主动增加的方法并不是一样的。如在SQLSERVER中,用identity,MYSQL中,有increment,ORACLE中一般选用sequence。这样一来,在数据库的主键列操作上,便会显得对比费事。

可是在Hibernate中,提供了主键生成战略。下面是对比常用的几种:

1:assigned

----表明在新增数据时由应用程序指定主键的值。首要针对主键是选用天然主键的方法。这种方法,适用于主键列不是主动增加列。

其缺陷为在履行新增操作时,需查询数据库判别生成的主键是否现已存在。

2:increment

----表明新增数据操作时由hibernate主动生成主键值。其生成的值为:先查询该主键列的最大值,然后在最大值的基础上加上1.适用于选用署理主键方法的主键列。相同不能用于主键列是主动增加的表。可是,该主键生成战略也有些缺陷。

(1)新增数据前先查询一遍,影响了功能。

(2)主键的类型只能为数值型的int或者long

(3)并发操作时的抵触疑问。

3:identity

----不如说是为sqlerver数据库量身定做的。首要适用于sqlserver数据库的主动增加列的表。

4:native

----表明依据不一样的数据库选用不一样的主键生成战略。比方,当时数据库为sqlserver,则会选用identity,如为oracle,则选用

oracle中的sequence等。区别数据库的不一样是以hibernate主配置文件中sessionFactory中配置的数据库方言。

5.uuid

* 仅有主键生成方法。从Hibernate中提取出来

长处:避免了生成ID 时,与数据库的再次交道,功能上较高。但关于有的开发人员不太习气这种id生成方法,UUID生成的32为的字符串,不一样于identity 从1开端的整数。

选用hibernate的主键生成战略,就可以对比灵敏和方便的对表中的主键字段进行操作了。并且,不一样的数据库,不一样的主键方法,也只需要修改下映射文件就可以了

hibernate 中mysql的id生成策略,布布扣,bubuko.com

时间: 2024-10-19 08:28:34

hibernate 中mysql的id生成策略的相关文章

hibernate(四)ID生成策略

一.ID生成策略配置 1.ID生成方式在xml中配置方式: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping p

详解分布式系统中的唯一id生成策略

系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结.生成ID的方法有很多,适应不同的场景.需求以及性能要求.所以有些比较复杂的系统会有多个ID生成的策略.下面就介绍一些常见的ID生成策略. 平常应用中方式很多 1. 数据库自增长序列或字段 2. UUID 3.uuid的变种 4.redis生成 5. Twitter的snowflake算法 snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID.其核心思想是:使用41bit作为毫秒数,1

Hibernate中联合主键生成策略

一.xml配置联合主键 单独设计一个类,作为主键类,如StudentPK A.实现序列化(Serializable接口) B.重写equals()和hashCode() 为什么要从写equals()和hashCode()方法? hashCode相同的会被存储在hash表的同一位置,当找到特定的hashcode之后,会根据equals()方法判断是否是相同的对象,来查找到对应的数据. 小实验1: (1)创建联合主键类StudentPK package com.zgy.hibernate.model

Hibernate中ID生成策略

四.ID生成策略 第一种:XML配置ID 通过为<id>元素增加<generator>子元素,该子元素拥有class属性.常用的class属性有: (1)increment:用于为long.short.或者int类型生成唯一标识.只有在没有其他进程往同一张表中插入数据的时候才能使用.在集群不要使用.(极少使用) (2)native:让数据库自动选择identity,sequence,或者其他. (3)uuid:128位的UUID算法,产生String类型ID (4)identity

Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略

Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Test    public void  test1()    {        Session session = null;         try {             session = Hiber

hibernate ID生成策略配置

1.Student.hbm.xml配置 <hibernate-mapping package="com.wxh.hibernate.model"> <class name="Student" > <id name="id"> <generator class="uuid"></generator> </id> <property name="

[Hibernate开发之路](4)ID生成策略

一 对象关系数据库映射之Id 被映射的类必须定义相应数据库表主键字段.大多数类有一个JavaBeans风格的属性, 为每个实例包括唯一的标识. <id> 元素定义了该属性到数据库表主键字段的映射. <id name="propertyName" type="typename" column="column_name" unsaved-value="null|any|none|undefined|id_value&quo

Hibernate系列之ID生成策略

一.概述 hibernate中使用两种方式实现主键生成策略,分别是XML生成id和注解方式(@GeneratedValue),下面逐一进行总结. 二.XML配置方法 这种方式是在XX.hbm.xml文件中对generator进行配置,eg: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" &qu

Hibernate学习笔记(4)ID生成策略

一 对象关系数据库映射之Id 被映射的类必须定义对应数据库表主键字段.大多数类有一个JavaBeans风格的属性, 为每一个实例包含唯一的标识.<id> 元素定义了该属性到数据库表主键字段的映射. <id name="propertyName" type="typename" column="column_name" unsaved-value="null|any|none|undefined|id_value&quo