第八章 ID主键生成策略
(选查找数据库中的主键生成,然后再把对象insert进去)
用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。
identity
(主要用于mysql数据库)
注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。
对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。 (数据库自增)
sequence
(主要用于Oracle)
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。(数据库自增)
hilo
使用一个高/低位算法高效的生成long, short 或者 int类型的标识符。给定一个表和字段(默认分别是 hibernate_unique_key和next_hi)作为高位值的来源。 高/低位算法生成的标识符只在一个特定的数据库中是唯一的。
seqhilo
使用一个高/低位算法来高效的生成long, short 或者 int类型的标识符,给定一个数据库序列(sequence)的名字。
uuid (字符串)
用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串,它的生成是由hibernate生成,一般不会重复。
UUID包含:IP地址,JVM的启动时间(精确到1/4秒),系统时间和一个计数器值(在JVM中唯一)。 在Java代码中不可能获得MAC地址或者内存地址,所以这已经是我们在不使用JNI的前提下的能做的最好实现了
String uuid = java.util.UUID.randomUUID().toString();
guid
在MS SQL Server 和 MySQL 中使用数据库生成的GUID字符串。
native
跨数据库时使用,由底层方言产生。
根据底层数据库的能力选择identity, sequence 或者hilo中的一个。(数据库自增)
assigned
用户自定义id;
让应用程序在save()之前为对象分配一个标示符。这是 generator 元素没有指定时的默认生成策略。(如果是手动分配,则需要设置此配置)
select
通过数据库触发器选择一些唯一主键的行并返回主键值来分配一个主键。
foreign
使用另外一个相关联的对象的标识符。通常和 one-to-one 联合起来使用。
复合主键(联合主键):多个字段构成唯一性。
[翻译]Mybatis useGeneratedKeys参数的使用和自增主键的获取方式 对于支持自动生成记录主键的数据库,如 MySQL 和 SQL Server,将 useGeneratedKeys 参数的值设置为 true,就可以在记录insert成功后获得数据库自动生成的主键 ID
相关文章
- python 生成数组_Python创建数组「建议收藏」
- 实用技术|反弹Shell Payload在线生成
- hexdump什么意思_生成coredump文件
- 图片url地址的生成获取方法
- 一句话生成3D模型:AI扩散模型的突破,让建模师慌了
- 为什么检测人工智能生成的文本如此困难
- Hibernate的主键生成策略详解编程语言
- Activiti 数据库表自动生成策略详解编程语言
- Oracle 自动生成ID实现机制(oracle自增id)
- Linux下的模块生成技术(linux生成模块)
- MySQL自动生成ID:精确控制数据库记录(mysql自动生成id)
- Oracle自动生成唯一ID方案(oracle生成id)
- MySQL中实现主键自增长生成策略(mysql主键生成策略)
- 基于Redis的分布式ID生成策略(redisid生成)
- MSSQL生成唯一ID的实践探索(生成id mssql)
- MSSQL自动生成唯一ID的技术应用(mssql 自动id)
- Oracle修改列ID探索优化策略(Oracle修改列id)
- 使用Redis构建分布式唯一ID生成系统(使用redis生成id)
- 网站生成静态页面,及网站数据采集的攻、防原理和策略
- 生成卡号php代码