Server
[Java] JPA 사용시 Truncate 사용방법
니용
2021. 11. 25. 08:26
반응형
안녕하세요! 이번에는 테이블의 delete와 초기화를 보다 쉽게할 수 있는 truncate 를 간단히 설명하고, 이를 JPA에서 구현하는 방법에 대해 설명드리고자 합니다.
Truncate란?
전체 데이터를 삭제하는 것처럼 보이지만 실제로 테이블을 DROP 후 CREATE 하는 작업, 실행 시 데이터 초기화는 물론이거니와 자동으로 생성된 AUTO_INCREMENT 또한 ID값이 1로 시작됩니다. 데이터를 삭제하는 것이 아닌 테이블을 제거하였다가 생성하므로 delete 쿼리를 전송하였을 때보다 속도가 월등히 빠릅니다.
장점: 속도 빠르고 효율적
단점: 외래키가 걸려있으면 에러 발생, 특정 데이터만 삭제 불가능
사용법
Repository
public interface SomethingTableRepository extends JpaRepository<SomethingTable, Long> {
@Transactional
@Modifying
@Query(value = "truncate something_table", nativeQuery = true)
void truncateSomethingTable();
}
Service
public class SomethingTableServiceImpl implements SomethingTableService {
@Autowired
private SomethingTableRepository repository;
@Override
public void truncate() {
repository.truncateSomethingTable();
}
}
Is it possible to use "TRUNCATE" in Spring Data JPA using JpaRepository? Or a more effective method than the standard deleteAll(
Im currently using the standard jparepository method repository.deleteAll() to clean my table before adding new info. The table consists of 8300 rows with 5 columns each. It's currently taking abou...
stackoverflow.com
반응형