2009-04-23 10 views
2

私は、プロバイダとしてHibernateを使用してJPAでバルク挿入を行っています。 DBはOracleです。これはシーケンスジェネレータを作成し、挿入を行うたびにシーケンスジェネレータにnextvalを問い合わせます。私が1Kインサートをしていると、シーケンスジェネレータに1K回ヒットします。私はJPAに固執したい場合は、これをスピードアップする方法はありますか?JPA/Hibernateのバルク挿入が遅い

答えて

1

は、順序の事前割当て機能でショットを持っている:彼らは 最も効率的であり、最高の 並行性を持っているよう

シーケンスオブジェクトは、しかし、彼らはほとんどのよう 少なくとも移植性があり、最適な シーケンシングオプションを提供しますデータベースは をサポートしていません。 シーケンスオブジェクト シーケンスの事前割り当てを に設定します。データベースのINCREMENTを シーケンスオブジェクトに設定します。 事前割り当てサイズ。

3

JPA @SequenceGeneratorallocationSizeを使用してください。

それが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; 
関連する問題