cleanup by batch of 1000

This commit is contained in:
Athou
2013-06-16 15:40:33 +02:00
parent edcd54640a
commit 56f4f33707
2 changed files with 17 additions and 7 deletions

View File

@@ -20,10 +20,18 @@ public class DatabaseCleaner {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, -1 * (int) unit.toMinutes(value)); cal.add(Calendar.MINUTE, -1 * (int) unit.toMinutes(value));
List<FeedEntry> entries = feedEntryDAO.findByInserted(cal.getTime()); int deleted = -1;
for (FeedEntry entry : entries) { do {
feedEntryDAO.delete(entry.getStatuses()); List<FeedEntry> entries = feedEntryDAO.findByInserted(
} cal.getTime(), 1000);
feedEntryDAO.delete(entries); deleted = entries.size();
for (FeedEntry entry : entries) {
feedEntryDAO.delete(entry.getStatuses());
}
feedEntryDAO.delete(entries);
} while (deleted != 0);
} }
} }

View File

@@ -56,12 +56,14 @@ public class FeedEntryDAO extends GenericDAO<FeedEntry> {
return list; return list;
} }
public List<FeedEntry> findByInserted(Date olderThan) { public List<FeedEntry> findByInserted(Date olderThan, int max) {
CriteriaQuery<FeedEntry> query = builder.createQuery(getType()); CriteriaQuery<FeedEntry> query = builder.createQuery(getType());
Root<FeedEntry> root = query.from(getType()); Root<FeedEntry> root = query.from(getType());
query.where(builder.lessThan(root.get(FeedEntry_.inserted), olderThan)); query.where(builder.lessThan(root.get(FeedEntry_.inserted), olderThan));
return em.createQuery(query).getResultList(); TypedQuery<FeedEntry> q = em.createQuery(query);
q.setMaxResults(max);
return q.getResultList();
} }
public List<FeedEntry> findByFeed(Feed feed, int offset, int limit) { public List<FeedEntry> findByFeed(Feed feed, int offset, int limit) {