2009-04-23 101 views
2

我正在使用Hibernate作为我的提供程序使用JPA批量插入。 DB是Oracle。它创建了一个序列生成器,每次它执行插入操作时,它都会查询nextval的序列生成器。如果我正在做1K插入,它将触发序列发生器1K次。如果我想坚持使用JPA,有什么办法可以加快速度?JPA /休眠批量插入缓慢

回答

1

有序列预分配功能一拍:

序列对象提供最佳 排序选项,因为它们是 最有效和有最好的 并发性,但是他们是 至少便携式作为最数据库做 不支持它们。 序列对象 支撑序列预分配通过 数据库 序列对象上的增量设定该序列 预分配大小。

3

在JPA @SequenceGenerator使用allocationSize

参见该例子中,在那里它被设置为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;