¿Es posible utilizar "TRUNCATE" en la primavera de datos utilizando JPA JpaRepository? O un método más eficaz que el deleteAll estándar ()?

imkepo:

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.

SadmirD:

Ejemplo, en la interfaz de servicio:

public interface MyTableInterface {
    //...

    void truncateMyTable();
}

En su implementación de servicio (con @AutowiredmyTableRepository):

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 @Transactionalde la capa de servicio implemntation, en lugar de colocarlo en DAO / capa de repositorio

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=177337&siteId=1
Recomendado
Clasificación