2009-04-23 16 views
2

Ich mache Masseneinfügungen mit JPA mit Hibernate als meinen Provider. Die DB ist Oracle. Es hat einen Sequenzgenerator erstellt, und jedes Mal, wenn er einen Insert ausführt, fragt er den Sequenzgenerator nach nextval ab. Wenn ich 1K Einfügungen mache, wird es den Sequenzgenerator 1K mal treffen. Irgendeine Möglichkeit, dies zu beschleunigen, wenn ich bei JPA bleiben möchte?JPA/Hibernate Masseneinfügungen langsam

Antwort

1

Haben Sie einen Schuss mit der Sequenz Vorbelegung Merkmal:

Sequence-Objekte bieten die optimale Sequenzierung Option, da sie die effizientesten und haben die beste Gleichzeitigkeit sind, aber sie sind die dest tragbar, da die meisten Datenbanken tun unterstützen sie nicht. Sequenzobjekte Unterstützung Sequenzvorbelegung durch Einstellung der INCREMENT auf der Datenbank Sequenzobjekt auf die Sequenz Vorbelegungsgröße.

3

Verwenden Sie die allocationSize in der JPA @SequenceGenerator.

diesem Beispiel sehen, wo es auf 150 festgelegt ist:

@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;