在使用hibernate的Java EE应用程序中, 在一张大桌子上,我想清除数百万件物品。
例如
实际上,当对象存在时,我会这样做:
List<Object> objectList = this.getObjectManager()
.getObjectsByCriteria(clientName, objectType, MAX_OBJECTS);
for (final Object object : objectList) {
if (logger.isDebugEnabled()) {
logger.debug("will delete " + object);
}
this.getMManager().removeEntry(object);
counter++;
}
public void removeObject(final Object object) {
final Session session = this.getHibernateUtil().getSession();
session.delete(entry);
session.flush();
}
我想hibernate会在事务提交时删除所有对象,而不是逐个删除。
例如,为了删除2000个对象而没有内存或休眠异常,最佳解决方案是什么?
如何使用hibernate逐个删除?
答案 0 :(得分:3)
不要获取它们,只需使用一些标准进行删除。在这种情况下使用HQL
session.createQuery("delete from MyClass where ...").setXXX(...).executeUpdate();