Actualmente estoy usando el método estándar jparepository repository.deleteAll () para limpiar mi mesa antes de añadir nueva información. La tabla consta de 8300 filas con 5 columnas cada una. En la actualidad está tomando alrededor de 80 segundos para llegar a todos ellos eliminados, mientras que tarda 1-3 segundos para ponerlos en el uso de la repository.saveAll estándar (lista). ¿Hay una manera más eficiente de hacer esto? Eliminación de los datos de forma manual en SQL con DELETE FROM tabla toma 0,1 seg. Utilizando la base de datos MySQL. log de poner en los datos de registro de eliminación.
Ejemplo, en la interfaz de servicio:
public interface MyTableInterface {
//...
void truncateMyTable();
}
En su implementación de servicio (con @Autowired
myTableRepository):
public class MyTableImpl implements MyTableService {
// other methods, @Autowiring, etc
@Override
@Transactional
public void truncateMyTable() {
myTableRepository.truncateMyTable();
}
}
En su repositorio;
public interface MyTableRepository extends JpaRepository<MyTable, Long> {
//....
@Modifying
@Query(
value = "truncate table myTable",
nativeQuery = true
)
void truncateMyTable();
}
EDIT: Observe también el @Transactional
de la capa de servicio implemntation, en lugar de colocarlo en DAO / capa de repositorio