我正在使用Hibernate作为我的提供者使用JPA进行批量插入。数据库是Oracle。它创建了一个序列生成器,每次执行插入时,它都会查询序列生成器的nextval。如果我正在进行1K插入,它将在序列发生器上击中1K次。如果我想坚持使用JPA,有什么方法可以加快速度呢?
答案 0 :(得分:3)
使用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;
答案 1 :(得分:1)
使用序列预分配功能进行拍摄:
序列对象提供最佳 排序选项,因为它们是 效率最高,效果最好 并发,但他们是 大多数数据库都是最不便携的 不支持他们。 序列对象 通过支持序列预分配 在数据库上设置INCREMENT 序列对象到序列 预分配大小。