エントリがすでに存在する場合にのみ、エントリをテーブルに保存しています。
public static Email getOrCreate(Session sess, String address) {
if (address==null) return null;
List l = sess.createQuery("SELECT email FROM Email email WHERE email.address=:address").setString("address", address).list();
if (l.size() > 0)
return (Email) l.get(0);
Email email = new Email(address);
sess.save(email);
return email;
}
私はこの手順の速度に満足していません。5000の複雑なレコードを保存するのに約5分かかり、時間の50%がこの関数で占められています。私の休止状態のキャッシュ設定は次のとおりです。cfg.setProperty( "hibernate.cache.provider_class"、 "org.hibernate.cache.EhCacheProvider");
もちろん、静的マップを作成してデータベースと同期することもできますが、少し見苦しいです。冬眠はこのようなことをすることができますか?ありがとう。