JPA 에서 Repository 를 통한 기본 Delete 는
Delete, DeleteById , DeleteAll 가 있다
Delete() - Entity 를 객체로 받아서 삭제
@Repository
public interface BoardRepository extends JpaRepository<BoardVo , Long> {
}
JpaRepository 를 상속받는다
@RestController
@RequestMapping("/api/*")
public class BoardController {
@Autowired
private BoardRepository boardRepository;
@PostMapping("/boardDelete")
public void boardDelete() throws Exception {
// 임의의 데이터를 생성
BoardVo vo = new BoardVo();
vo.setNo(180L);
vo.setTitle("삭제용");
vo.setContents("삭제 내용");
vo.setWriter("흰둥이");
// Entity 를 생성
boardRepository.save(vo);
// 저장된 Entity 를 조회
Optional<BoardVo> findData1 = boardRepository.findById(180L);
System.out.println("저장된 Entity : " + findData1.get());
// Entity 를 객체로 삭제
boardRepository.delete(vo);
// 삭제된 Entity 를 조회
Optional<BoardVo> findData2 = boardRepository.findById(180L);
// 데이터가 삭제 확인
if(!findData2.isPresent()){
System.out.println("180 데이터 유무 " + findData2.isPresent());
}
}
}
DeleteById - Id(PK) 로 삭제
@Repository
public interface BoardRepository extends JpaRepository<BoardVo , Long> {
}
JpaRepository 를 상속받는다
@RestController
@RequestMapping("/api/*")
public class BoardController {
@Autowired
private BoardRepository boardRepository;
@PostMapping("/boardDeleteById")
public void boardDeleteById() throws Exception {
// 임의의 데이터를 생성
BoardVo vo = new BoardVo();
vo.setNo(180L);
vo.setTitle("삭제용");
vo.setContents("삭제 내용");
vo.setWriter("흰둥이");
// Entity 를 생성
boardRepository.save(vo);
// 저장된 Entity 를 조회
Optional<BoardVo> findData1 = boardRepository.findById(180L);
System.out.println("저장된 Entity : " + findData1.get());
// 삭제하려는 대상의 PK ID 사용
boardRepository.deleteById(180L);
// 삭제된 Entity 를 조회
Optional<BoardVo> findData2 = boardRepository.findById(180L);
// 데이터가 삭제 확인
if(!findData2.isPresent()){
System.out.println("180 데이터 유무 " + findData2.isPresent());
}
}
}
DeleteAll(Iterable<? extends T> entities) - 여러 Entity 를 객체로 받아서 삭제
@Repository
public interface BoardRepository extends JpaRepository<BoardVo , Long> {
// 삭제 확인용
Long countByNoIn(List<Long> count);
}
JpaRepository 를 상속받는다
countByNoIn 은 JPA 명명규칙에 맞춘 메서드이다
No 라는 컬럼을 In 절로 조회하였을 때의 개수를 반환한다
@RestController
@RequestMapping("/api/*")
public class BoardController {
@Autowired
private BoardRepository boardRepository;
@PostMapping("/boardDeleteAll")
public void boardDeleteAll() throws Exception {
// 데이터를 담을 변수
List<BoardVo> list = new ArrayList<>();
// 저장된 데이터의 개수 확인용 변수
List<Long> count = new ArrayList<>();
// 임의의 20개의 데이터 생성
for (int i = 0; i < 20; i++) {
BoardVo vo = new BoardVo();
vo.setNo(180L + i);
vo.setTitle(i + " 번째 삭제용");
vo.setContents(i + " 번째 삭제용");
vo.setWriter("흰둥이"+i);
list.add(vo);
count.add(vo.getNo());
}
// 한번에 저장
boardRepository.saveAll(list);
// 저장된 Entity 개수 확인
Long addCount = boardRepository.countByNoIn(count);
System.out.println("저장된 개수 : " + addCount);
// 삭제하려는 대상의 List Entity
boardRepository.deleteAll(list);
// 삭제된 Entity 를 조회
Long addCount2 = boardRepository.countByNoIn(count);
System.out.println("저장된 데이터 : " + addCount2 + " 개 남았습니다.");
}
}
DeleteAll() - 테이블의 모든 데이터 삭제
@Repository
public interface BoardRepository extends JpaRepository<BoardVo , Long> {
}
JpaRepository 를 상속받는다
@RestController
@RequestMapping("/api/*")
public class BoardController {
@Autowired
private BoardRepository boardRepository;
@PostMapping("/boardDeleteAll")
public void boardDeleteAll() throws Exception {
// 현재 저장된 Entity 개수 확인
Long totalCount = boardRepository.count();
System.out.println("총 저장된 데이터 개수 : " + totalCount);
// 삭제하려는 대상의 Repository
boardRepository.deleteAll();
// 삭제된 Entity 를 조회
Long totalCount2 = boardRepository.count();
System.out.println("저장된 데이터 : " + totalCount2 + " 개 남았습니다.");
}
}
Delete() 는 Entity 를 객체로 받아서 단건을 삭제
- repository.delete(엔티티클래스)
DeleteById() 는 PK 컬럼 데이터를 이용하여 단건을 삭제
- repository.deleteById(삭제하려는 데이터 PK 값)
DeleteAll() 은 여러 Entity 를 객체로 받아서 복수를 삭제하거나 테이블의 전체 데이터를 삭제
- repository.deleteAll(List< 엔티티클래스> entites)
- repository.deleteAll()
'개발 > JPA' 카테고리의 다른 글
[JPA] @OneToMany , @ManyToOne 사용하기 (1) | 2024.11.15 |
---|---|
[JPA] @GeneratedValue 사용하기 (0) | 2024.11.14 |
[JPA] Entity 설정하기 (0) | 2024.11.13 |
[JPA] INSERT , UPDATE 하기(Save , SaveAll) (0) | 2024.11.11 |
[JPA] SELECT 하기(findBy , @Query , @Param , where , and , if test) (0) | 2024.11.10 |
댓글