Hibernate的主键生成策略:
主键的分类:
1、自然主键:该主键是本身是实体的一个属性。
2、代理主键:该主键不是实体中的一个属性,而是我们为了标识不同实体额外添加的一个字段。
我们尽量使用代理主键,因为在Hibernate中主键是不允许修改的。(OCP原则)
一般情况不允许用户自动生成主键,而是使用Hibernate提供的主键生成策略。
在mapping映射文件中,id标签需要一个子标签genetor,属性class的取值是为主键生成策略的方式。
increment:适用于short,int,long类型的主键,是Hibernate的自动增长模式。线程不安全的
identity:适用于short,int,long类型的主键,采用数据库底层的自动增长模式,适用于有id自增长的数据库,如mysql,线程安全
sequence:适用于short,int,long类型的主键,采用数据库的序列增长模式,适用于底层使用sequence的数据库,如Oracle
native:本地策略,根据数据库底层的增长方式,来确定是identity还是sequence
foreign:在一对一关系中,一个表的主键由另一个的主键决定。
uuid:适用于主键是String类型的变量。
assigned:Hibernate放弃对主键的管理,需要手动编写程序来生成。
Hibernate的主键生成策略
最新推荐文章于 2024-01-25 19:04:29 发布