Hibernate提供的内置标识符生成器 1.increment:Hibernate以递增的方式为代理主键赋值。就是先读取表中主键的最大值,接下来向表中执行插入操作时,主键id就会在max(id)的基础上递增,所以有
1.increment:Hibernate以递增的方式为代理主键赋值。就是先读取表中主键的最大值,接下来向表中执行插入操作时, 主键id就会在max(id)的基础上递增,所以有可能会有线程安全问题; 2.identity:由底层数据库来负责生成标识符,它要求底层数据库把主键定义为自增长字段类型,所以底层数据库一定 要支持自增长字段类型,如DB2,Mysql...还有Oracle不支持 3.sequence:利用底层数据库提供的序列来生成标识符,Hibernate在new一个对象时,先从底层数据库的news_seq序列 中获得一个唯一的标识号,再把它作为对象的主键值。支持序列的底层数据库有DB2,Oracle... 4.hilo:由Hibernate按照一种high/low算法来生成标识符,Hibernate在持久化一个对象时,由Hibernate负责生成一 个主键值,hilo标识符生成器在生成标识符时,需要读取并修改HI_TABLE表中的NEXT_VALUE值,它不依赖任何底层数 据库,所以hilo支持所有底层数据库 5.native:该标识符生成器依据底层数据库对标识符生成器的支持能力,自动选择合适的标识符生成器,(identity, sequence,hilo)适合跨数据库平台开发。