【发布时间】:2009-04-23 04:50:51
【问题描述】:
我正在使用 Hibernate 作为我的提供程序使用 JPA 进行批量插入。数据库是甲骨文。它创建了一个序列生成器,每次插入时都会查询序列生成器的 nextval。如果我正在执行 1K 插入,它将击中序列生成器 1K 次。如果我想坚持使用 JPA,有什么方法可以加快速度?
【问题讨论】:
我正在使用 Hibernate 作为我的提供程序使用 JPA 进行批量插入。数据库是甲骨文。它创建了一个序列生成器,每次插入时都会查询序列生成器的 nextval。如果我正在执行 1K 插入,它将击中序列生成器 1K 次。如果我想坚持使用 JPA,有什么方法可以加快速度?
【问题讨论】:
在 JPA 中使用 allocationSize @SequenceGenerator。
看这个例子,它被设置为 150:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MY_ENTITY_SEQ")
@SequenceGenerator(name = "MY_ENTITY_SEQ", sequenceName = "MY_ENTITY_SEQ", allocationSize = 150)
@Column(name = "MY_ENTITY", nullable = false)
private Long id;
【讨论】:
试一试序列预分配功能:
序列对象提供最佳的 排序选项,因为它们是 最高效,拥有最好的 并发,但是它们是 像大多数数据库一样最不便携 不支持他们。 序列对象 通过支持序列预分配 在数据库上设置 INCREMENT 序列对象 预分配大小。
【讨论】: