hibernate 一级缓存和批量删除

对于hibernate 来说,一级缓存由session提供并且只会存在内存当中。因此当对数据进行大批量操作时,操作不当可能会出现OutOfMemoryError(内存溢出)异常,因此在对数据进行大批量操作时应注意以下几点:

1)不要频繁使用 session 的 flush,每进行一次flush ,hibernate 会将PO数据与数据库同步,对于海量数据操作来说,这简直是性能灾难。

2)及时清除不需要的一级缓存数据,在进行大量的数据操作时,可以对数据进行分批操作,且每一次操作后清除内存。

3)使用HQL的批量删除语句

String hql = “delete A where id in (:id)”;

Query query = session.createQuery(hql);
query.setParameterList(“id”, s).executeUpdate();

猜你喜欢

转载自blog.csdn.net/qq_18350493/article/details/107761334