All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fi.evolver.basics.spring.clean.DataCleaner Maven / Gradle / Ivy

There is a newer version: 6.7.0
Show newest version
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