主键生成策略
1、主键的分类:见链接:https://blog.csdn.net/pipizhen_/article/details/107851361
主键应该设置,和业务不相关的自然数,不要拿着人员的身份证做主键,拿着银行卡号做主键,因为业务可能会改动,而主键不能随便改。
在实际开发中一般不允许用户手动设置主键,一般将主键交给数据库,手动编写程序进行设置。在Hibernate中为了减少主键的编写,提供了很多种主键的生成策略。
2、常见的主键生成策略:
(1)increment
使用Hibernate中提供的自动增长机制,而不是数据库底层的自动增长,适用short,int,long类型的主键,只能在单线程中使用。
底层原理:先发送一条语句,select max(id) from表; 然后让id + 1作为下一条记录的id,如果多线程操作,可能存在主键一样的问题。
(2)identity
适用于short,int,long类型的主键,使用的是数据库底层的自动增长机制。
适用于有自动增长机制的数据库(MySQL,Sql Server),但是Oracle是没有自动增长机制的。
(3)sequence
适用于short