我目前使用标准的jparepository方法repository.deleteAll()在添加新信息之前清理表.该表包含8300行,每行5列.目前将它们全部删除大约需要80秒,而使用标准repository.saveAll(list)将它们放入则需要1-3秒.有更有效的方法吗?在SQL中使用DELETE FROM表手动删除数据需要0.1秒.使用MySQL数据库. log from putting in data
log from deletion.
解决方法:
例如,在您的服务界面中:
在您的服务界面中:
public interface MyTableInterface {
//...
void truncateMyTable();
}
在您的服务实现中(使用@Autowired myTableRepository):
public class MyTableImpl implements MyTableService {
// other methods, @Autowiring, etc
@Override
@Transactional
public void truncateMyTable() {
myTableRepository.truncateMyTable();
}
}
在您的存储库中;
public interface MyTableRepository extends JpaRepository {
//....
@Modifying
@Query(
value = "truncate table myTable",
nativeQuery = true
)
void truncateMyTable();
}
编辑:还请注意服务事务层上的@Transactional,而不是将其放在DAO /存储库层上
标签:spring-data-jpa,spring,sql,java,mysql
来源: https://codeday.me/bug/20191108/2008177.html