JPA 操作Delete耗時問題

項目框架是springdatajpa ,使用的數據庫持久層接口直接繼承JpaRepository;

public interface IdapBaseDeviceRepository extends JpaRepository<IdapBaseDevice,Integer>{

}

 

業務層需要操作持久化數據時,直接注入該接口,就可以調用接口。。其中有一部分是接口中定義的方法,也有一些複雜的sql需要自己寫sql或者JPQL語句來實現。。

 

問題出現在這。。。

 

使用注入 @Autowired  private IdapBaseDeviceRepository  idapBaseDeviceRepository ;時。。

該接口有自有方法deleteAll()方法;

如果直接使用該自有方法時,可以實現刪除的業務。。表中10000條數據時,刪除可能要用到1-2分鐘。。

 

感到很耗時。。。遂使用自己寫的delete from table;sql來實現,只需要0.05毫秒左右;;

 

於是乎,在該IdapBaseDeviceRepository 中寫sql

@Transactional
@Modify
@Query(value = "delete from table_name",nativeQuery = true)
int deleteAllData();

就是這麼簡單的代碼,在項目中執行,也只用了0.262秒。。10000條數據。。。

 

很是困惑。。。

 

而且把showsql顯示後,發現刪除的時候是一條一條記錄刪除的。。。蛋疼

 

另:

 

一個表中兩個字段,一個是業務字段,我將其設置爲主鍵(有意義的唯一的業務數據)。另一個字段就是很簡單的常量了。。;

創建數據庫實體類的時候,兩個字段都給了。。。save(list)的時,竟然還在生成主鍵值。。。一條一條,賊慢。。。煩躁

 

數據庫:mysql  jpa 實體類主鍵的主鍵就是@Id。。

 

//todo 何時能解決啊。。。大佬,help

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章