Hibernate——(3)主键生成方式
一、Hibernate中常用的主键生成方式有如下几种:
1)identity: 用于自动生成主键方式,除了 Oracle 不支持,其他数据库一般都支持(较常用)
2)sequence: Oracle 中使用,用序列生成 ID 主键
3)native: 主键生成方式如果是 native,那就看配置文件 hibernate.cfg.xml 中方言<property name="dialect">是什么,如果方言是 Mysql,相当于 identity,如果方言是 Oracle,相当于 sequence
4)increment: 不常用
5)assigned: 不常用,手动生成 id
二、案例:5种主键生成方式演示
1、项目结构
2、新建Foo:用于测试的POJO
8、查询数据库sequence:Oracle数据库常用
9、创建Oracle数据库表并创建生成ID的sequence
10、修改配置文件hibernate.cfg.xml :修改成Oracle数据库的
13、查看数据库native :native根据配置文件的方言选择是identity还是squence
新建数据库表t_foo时不需要写“auto_increment"
插入数据时,同样也不需要指定ID
查看控制台,Hibernate执行了2条SQL
increment生成主键的方式是先“select max(t_id) from t_foo",从t_foo中找到最大的id,之后将max(t_id)加1,这样就保证了主键唯一。但是这样也有风险,当并发访问时会有风险。不建议使用。
assigned: 没有任何自动方式,需要用户自己指定,使用也较少设置主键为assigned
必须手动设置ID