それはJpaRepositoryを使用して春データJPAで「TRUNCATE」を使用することは可能ですか?または標準DELETEALLより効果的な方法()?

imkepo:

イムは、現在、新しい情報を追加する前に、私のテーブルをきれいにするために、標準的なjparepositoryメソッドrepository.deleteAll()を使用します。表5のカラムそれぞれに8300個の行から成ります。それは、標準repository.saveAll(リスト)を使用して、それらを入れて1-3秒かかりながら、現在、彼らはすべて削除されますし、約80秒を取っています。これを行うために、よりeffecient方法はありますか?表から削除を持つSQLでデータを手動で削除すると、0,1秒かかります。MySQLデータベースを使用します。データを入れてからログインし 削除からログ。

SadmirD:

たとえば、あなたのサービス・インターフェースで:

public interface MyTableInterface {
    //...

    void truncateMyTable();
}

(とあなたのサービスの実装で@AutowiredmyTableRepository):

public class MyTableImpl implements MyTableService {

    // other methods, @Autowiring, etc

    @Override
    @Transactional
    public void truncateMyTable() {
        myTableRepository.truncateMyTable();
    }
}

リポジトリで、

public interface MyTableRepository extends JpaRepository<MyTable, Long> {
    //....

    @Modifying
    @Query(
            value = "truncate table myTable",
            nativeQuery = true
    )
    void truncateMyTable();
}

編集:また気づき@Transactional、サービスimplemntation層の上に代わりにDAO /リポジトリ層の上に配置します

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=177334&siteId=1