仅当条目已经存在时,我才将条目保存在表中:
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");
当然我有时可以创建静态地图并将其与数据库同步,但它看起来有点难看。休眠可以做这样的事情吗?谢谢。