hibernate关于主键生成策略的疑惑。

2025-04-29 21:09:03
推荐回答(5个)
回答1:

hibernate 主键生成策略有三种:序列 自增 通用
1、序列 sequence
只能在oracle 和 DB2中使用





2、自增 identity
智能在sqlserver 和 mysql 中使用,同时建表的时候,设置列 为 auto increment。



3、通用 native
mysql 就用不了了
这个oracle中必须创建一个名字为 hibernate_sequence的序列。


回答2:

第一个问题,应该是一样的,不过我具体没有试过,楼主可以试一下.

第二个问题,如果你使用hibernate的话 这些建表的语句 就不用你自己写了,完全是hibernate自动生成的 也就是说用对象实体映射来生成表,也不会出现楼主所说的那样的问题

那第三个问题 也就没有了 uuid是32位的一个字符串

回答3:

前半部分你自己已经把自己问题都回答了。

至于关于uuid,uuid需要用字符串类型,int类型做ID时不能用uuid这个生成策略。

hibernate有自动从领域模型生成数据库表的能力。对程序员来说应该更多关注领域模型,生成表及表的关系交给ORM工具去完成就可以了。

回答4:

咕~~(╯﹏╰)b没仔细研究过,oracle我就用sequence,sqlserver就用native,需要的时候用用那个什么要自己设定主键的,mysql没用过

回答5:

hibernate
主键生成策略有三种:序列
自增
通用
1、序列
sequence
只能在oracle

DB2中使用
name="id"
column="id">
class="sequence">
name="在数据库中创建的sequence名字"/>


2、自增
identity
智能在sqlserver

mysql
中使用,同时建表的时候,设置列

auto
increment。
name="id"
column="id">
class="identity"/>

3、通用
native
mysql
就用不了了
这个oracle中必须创建一个名字为
hibernate_sequence的序列。
name="id"
column="id">
class="native"/>