
fi.evolver.basics.spring.clean.DataCleaner Maven / Gradle / Ivy
package fi.evolver.basics.spring.clean;
import static fi.evolver.utils.timing.TimingUtils.begin;
import java.util.List;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import fi.evolver.utils.timing.TimingUtils.AutoCloser;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.Query;
@Component
public class DataCleaner {
@PersistenceContext
private EntityManager em;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public int deleteBatch(Class> table, List batch) {
Query query = em.createQuery(String.format("DELETE FROM %s l WHERE l.id IN :ids", table.getSimpleName()));
query.setParameter("ids", batch);
return query.executeUpdate();
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public long deleteByIdLessThan(Class> table, long maxId) {
try (AutoCloser t = begin("Delete")) {
Query query = em.createQuery("DELETE FROM " + table.getSimpleName() + " WHERE id < :maxId");
query.setParameter("maxId", maxId);
return query.executeUpdate();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy