我很新于数据库开发,也许这个问题不是完全准确的,但如果有人能使它更加清晰,我会非常感激...我已经阅读了所有关于序列的内容,以及如何优先使用序列而不是标识。我有一个假设性的问题。如果我要使用序列来生成我的PK,并使用Hibernate(数据插入)和Liquibase(模式创建),那么定义序列的正确位置是什么?
例如:在类级别上生成序列。
例如:在类级别上生成序列。
@Entity
@Table(name = "USER")
public class User {
@Id
@SequenceGenerator(name = "USER_SEQ", sequenceName = "USER_SEQ")
@GeneratedValue(strategy = SEQUENCE, generator = "USER_SEQ")
@Column(name = "ID")
private Long id;
// other fields
}
另一个例子:在模式层面上生成序列。
changelog.xml
<changeSet author="wesleyy">
<createSequence catalogName="cat"
cycle="true"
incrementBy="1"
maxValue="1000"
minValue="10"
ordered="true"
schemaName="public"
sequenceName="user_seq"
startValue="1"/>
</changeSet>
在Liquibase和Hibernate中都需要定义序列吗?这两者之间到底有什么区别?
GenerationType.IDENTITY
时要小心,因为它会禁用批处理功能。如果您关心性能并需要大量的行,请注意。例如,请参见 https://thorben-janssen.com/hibernate-tips-use-custom-sequence/。 - Guillermo