在JAVA中,以下哪个Hibernate主键生成策略是实现主键按数值顺序递增的?( )
increment
identity
sequence
native
常见的主键生成策略:
increment
使用Hibernate中提供的自动增长机制,而不是数据库底层的自动增长,适用short,int,long类型的主键,只能在单线程中使用。
底层原理:先发送一条语句,select max(id) from表; 然后让id + 1作为下一条记录的id,如果多线程操作,可能存在主键一样的问题。
identity
适用于short,int,long类型的主键,使用的是数据库底层的自动增长机制。
适用于有自动增长机制的数据库(MySQL,Sql Server),但是Oracle是没有自动增长机制的。
sequence
只适用于支持sequence机制生成主键的数据库,主键值由数据库生成,如MySql就不支持,Oracle就支持
native
native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强,这样以来如果一个项目中使用多个数据库时,就可以使用这种方式
increment
使用Hibernate中提供的自动增长机制,而不是数据库底层的自动增长,适用short,int,long类型的主键,只能在单线程中使用。
底层原理:先发送一条语句,select max(id) from表; 然后让id + 1作为下一条记录的id,如果多线程操作,可能存在主键一样的问题。
identity
适用于short,int,long类型的主键,使用的是数据库底层的自动增长机制。
适用于有自动增长机制的数据库(MySQL,Sql Server),但是Oracle是没有自动增长机制的。
sequence
只适用于支持sequence机制生成主键的数据库,主键值由数据库生成,如MySql就不支持,Oracle就支持
native
native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强,这样以来如果一个项目中使用多个数据库时,就可以使用这种方式