Hibernate主键生成策略及选择

简介: 1 .increment:适用于short,int,long作为主键,不是使用数据库自动增长机制这是hibernate中提供的一种增长机制           在程序运行时,先进行查询:select max(id) from user;                             ...

1 .increment:适用于short,int,long作为主键,不是使用数据库自动增长机制

这是hibernate中提供的一种增长机制

           在程序运行时,先进行查询:select max(id) from user;

                                       再进行插入:或得最大值+1作为新的记录的主键

问题:不能在集群环境下或者有并发访问的情况下使用

2 .identity 适用于short,int,long作为主键,但是这个必须使用在有自动增长机制的数据库中,采用的是数据库底层的自动增长机制

底沉使用的是数据库的自动增长(auto_increment),像oracle数据库没有自动增长

3.sequence 适用于short,int,long作为主键,底层使用的是序列的增长方式

  • oracle 数据库底层没有自动增长,想自动增长需要使用序列

4.native本地策略,根据底层数据库不同,自动选择适用于该数据库的生成策略(short int long)

如果底层使用的是mysql没数据库相当于 identity

如果使用的oracle数据库,相当于sequence

5.uuid,适用于char,varchar类型作为主键.

使用随机的字符串作为主键

6.assigned 主键自己维护,不使用hibernate维护

总结:使用时,如果主键是short,int long类型,采用native主键生成策略,如果是字符串,使用uuid主键生成策略

 

相关文章
|
SQL Java 数据库连接
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
83 0
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
|
存储 SQL Oracle
Hibernate-05-主键生成策略
Hibernate-05-主键生成策略
Hibernate-05-主键生成策略
|
SQL 缓存 Java
hibernate(八) Hibernate检索策略(类级别,关联级别,批量检索)详解
很多看起来很难的东西其实并不难,关键是看自己是否花费了时间和精力去看,如果一个东西你能看得懂,同样的,别人也能看得懂,体现不出和别人的差距,所以当你觉得自己看了很多书或者学了很多东西的时候,你要想想,你花费的也就那么一点时间,别人花你这么多时间也能够学到你所学到的东西,所以还是要继续努力。既然不是天才,唯有靠勤奋来弥补。
164 0
|
SQL 关系型数据库 数据库
Hibernate-ORM:03.Hibernate主键生成策略
  ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------       此篇博客简单记录五种常用的主键生成策咯:   不同的主键生成策略,生成的sql语句,以及hibernate的操作都是不同的!   3.
1235 0
|
Web App开发 Java 数据库连接
|
算法 关系型数据库 Java
Hibernate-05-主键生成策略
主键生成策略 class 可配置项 native:根据使用的数据库帮你选择哪个值 uuid:类似C#Guid 1、assigned 主键由外部程序负责生成,在 save() 之前必须指定一个。
1037 0
|
SQL 缓存 Java
Hibernate之加载策略(延迟加载与即时加载)和抓取策略(fetch)
  假设现在有Book和Category两张表,表的关系为双向的一对多,表结构如下:   假设现在我想查询id为2的那本书的书名,使用session.get(...)方法: 1 Session session=HibernateUtil.
1239 0
|
SQL Java 数据库连接
hibernate 3 ID策略生成器自定义,可用于注释 - 规则: 九位业务编号 + 六位日期 + 六位自增长序列
/***hibernate ID策略生成器 自定义 -  规则: 业务编号 + 日期 + 六位自增长序列*/public class MyKeyGenerator implements IdentifierGenerator, Configurable {    private static final Log log = LogFactory.
608 0
|
SQL Java 关系型数据库
基于按annotation的hibernate主键生成策略
这里讨论代理主键,业务主键(比如说复合键等)这里不讨论。 一、JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue设定的.
946 0
|
18天前
|
SQL Java 数据库连接
jpa、hibernate、spring-data-jpa、jdbcTemplate
jpa、hibernate、spring-data-jpa、jdbcTemplate