为什么大多数hibernate应用程序都使用序列进行id生成?

IAd*_*ter 5 java sql database hibernate jpa

为什么大多数hibernate应用程序都使用序列进行id生成?

为什么不在@GeneratedValue注释中使用默认的GenerationType = AUTO?

PS在我的职业生涯中,我看到每个人都是使用序列,但我不明白为什么他们更难以部署解决方案(在部署指令中始终有序列创建SQL命令).

JB *_*zet 5

我看到几个原因:

  1. 企业应用程序中使用最多的数据库可能是Oracle,而Oracle没有自动生成的ID,而是序列.
  2. 序列允许在插入新行之前使用ID,而不是在插入新行之后.这更容易使用且更有效,因为您可以在事务结束时批量插入语句,但仍然在事务中间定义ID.
  3. 序列允许使用hilo算法(这是hibernate序列生成的默认算法),因此只对几个插入进行一次DB调用,从而提高了性能.
  4. AUTO在数据库之间变化,而序列始终使用相同的策略.