Im currently using the standard jparepository method repository.deleteAll() to clean my table before adding new info. The table consists of 8300 rows with 5 columns each. It's currently taking about 80 sec to get them all removed, while it takes 1-3 sec to put them in using the standard repository.saveAll(list). Is there a more effecient way to do this? Deleting the data manually in sql with DELETE FROM table takes 0,1 sec. Using MySQL database. log from putting in data log from deletion.
Example, in your service interface:
public interface MyTableInterface {
//...
void truncateMyTable();
}
In your service implementation (with @Autowired
myTableRepository):
public class MyTableImpl implements MyTableService {
// other methods, @Autowiring, etc
@Override
@Transactional
public void truncateMyTable() {
myTableRepository.truncateMyTable();
}
}
In your repository;
public interface MyTableRepository extends JpaRepository<MyTable, Long> {
//....
@Modifying
@Query(
value = "truncate table myTable",
nativeQuery = true
)
void truncateMyTable();
}
EDIT: Also notice the @Transactional
on service implemntation layer, instead of placing it on DAO/Repository layer