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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值