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主键生成策略

 

相关文章
|
4月前
|
缓存 NoSQL Java
揭秘性能提升的超级武器:掌握Hibernate二级缓存策略!
【9月更文挑战第3天】在软件开发中,性能优化至关重要。使用Hibernate进行数据持久化的应用可通过二级缓存提升数据访问速度。一级缓存随Session生命周期变化,而二级缓存是SessionFactory级别的全局缓存,能显著减少数据库访问次数,提高性能。要启用二级缓存,需在映射文件或实体类上添加相应配置。然而,并非所有场景都适合使用二级缓存,需根据业务需求和数据变更频率决定。此外,还可与EhCache、Redis等第三方缓存集成,进一步增强缓存效果。合理运用二级缓存策略,有助于大幅提升应用性能。
104 5
|
5月前
|
缓存 Java 数据库连接
Hibernate 中的获取策略有哪些?
【8月更文挑战第21天】
25 0
|
6月前
|
SQL 缓存 Java
使用Hibernate实现复杂数据库查询优化策略
使用Hibernate实现复杂数据库查询优化策略
|
6月前
|
SQL 缓存 Java
使用Hibernate实现复杂数据库查询优化策略
使用Hibernate实现复杂数据库查询优化策略
|
7月前
|
缓存 Java 数据库连接
构建高效数据库交互:Hibernate与JPA的性能优化策略
【6月更文挑战第25天】在大数据时代,优化Hibernate和JPA的数据库性能至关重要。本文探讨了优化策略:正确配置映射以减少冗余,利用JPQL/HQL提升查询效率,避免全字段选择,使用索引和分页,有效利用缓存策略,以及管理事务以平衡资源锁定。示例代码展示了分页查询的实现,以防止性能下降。
136 0
|
8月前
|
Java 数据库连接 数据库
Hibernate5中实体映射命名策略
Hibernate5中实体映射命名策略
146 0
|
8月前
|
SQL 缓存 Java
Hibernate - 检索策略入门与详解
Hibernate - 检索策略入门与详解
62 0
|
SQL Java 数据库连接
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
113 0
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
|
存储 SQL Oracle
Hibernate-05-主键生成策略
Hibernate-05-主键生成策略
Hibernate-05-主键生成策略
|
SQL 缓存 Java
hibernate(八) Hibernate检索策略(类级别,关联级别,批量检索)详解
很多看起来很难的东西其实并不难,关键是看自己是否花费了时间和精力去看,如果一个东西你能看得懂,同样的,别人也能看得懂,体现不出和别人的差距,所以当你觉得自己看了很多书或者学了很多东西的时候,你要想想,你花费的也就那么一点时间,别人花你这么多时间也能够学到你所学到的东西,所以还是要继续努力。既然不是天才,唯有靠勤奋来弥补。
201 0