私のコードでいくつかの Hibernate リソースの「リーク」があるようです。
疑似コード
20,000 以上のレコードのそれぞれについて
エンティティの例で Criteria を使用してレコードを検索する エンティティ
のコレクションに新しいオブジェクトを追加する 新しいオブジェクトを含む
エンティティをデータベースに保存する
問題
サンプル エンティティによる検索は、レコード 12,764 で失敗します。テストケースでその検索だけを実行すると、正常に取得されます。入力ファイルをそれぞれ 10,000 レコードの複数のファイルに分割すると、すべてのレコードが処理されます。これは、データベースレコードを見つけるために使用しているコードです
try {
// begin transaction
ses = Activator.getSession();
ses.beginTransaction();
// find the object
Criteria crit = getSession().createCriteria(getPersistentClass());
Example example = Example.create(exampleInstance);
for (String exclude : excludeProperty) {
example.excludeProperty(exclude);
}
crit.add(example);
foundEntities = crit.list();
for (T curT : foundEntities) {
this.initHibernateEntity((I) curT);
}
// commit transaction
ses.getTransaction().commit();
} catch // all exceptions
finally {
if (ses != null && ses.isOpen()) {
ses.close();
}
}
これがどこにあるのかについての提案をいただければ幸いです。