스프링 DB 1편 - 데이터 접근 핵심 원리<섹션 1. JDBC 이해>

김성훈·2022년 10월 12일
0

스프링 DB 인프런

목록 보기
6/8
post-thumbnail

수정과 삭제는 등록과 비슷하다.
등록, 수정 삭제처럼 데이터를 변경하는 쿼리는 executeUpdate()를 사용하면 된다.

executeUpdate() 는 쿼리를 실행하고 영향받은 row수를 반환한다.
하나의 데이터만 변경한다면 결과로 1이 반환된다.
만약 100개의 데이터가 있고, 모든 데이터를 한번에 수정하는 update sql을 실행하면 결과는 100이 된다.

수정

   @Test
  void crud() throws SQLException {
//save
      Member member = new Member("memberV0", 10000);
      repository.save(member);
//findById
      Member findMember = repository.findById(member.getMemberId());
      assertThat(findMember).isEqualTo(member);
      //update: money: 10000 -> 20000
      repository.update(member.getMemberId(), 20000);
      Member updatedMember = repository.findById(member.getMemberId());
      assertThat(updatedMember.getMoney()).isEqualTo(20000);
}

//
MemberRepositoryV0 - resultSize=1

회원 데이터의 money를 10000 -> 20000 으로 수정하고, DB에서 데이터를 다시 조회해 20000으로 변경 되었는지 검증한다.

결과를 보니 pstmt.executeUpdate()의 결과가 1인 것을 확인할 수 있다.
이것은 해당 SQL에 영향을 받은 로우 수가 1개라는 뜻이다.

삭제

@Test
        void crud() throws SQLException {
//save
            Member member = new Member("memberV0", 10000);
            repository.save(member);
//findById
            Member findMember = repository.findById(member.getMemberId());
            log.info("findMember={}", findMember);
            assertThat(findMember).isEqualTo(member);
            //update: money: 10000 -> 20000
            repository.update(member.getMemberId(), 20000);
            Member updatedMember = repository.findById(member.getMemberId());
            assertThat(updatedMember.getMoney()).isEqualTo(20000);
//delete
            repository.delete(member.getMemberId());
            assertThatThrownBy(() -> repository.findById(member.getMemberId()))
                    .isInstanceOf(NoSuchElementException.class);
}

회원을 삭제한 다음 findById()를 통해서 조회한다.
회원이 없기 때문에 NoSuchElementException이 발생한다.
assertThatThrownBy 는 해당 예외가 발생해야 검증에 성공한다.

참고
마지막에 회원을 삭제하기 때문에 테스트가 정상 수행되면,같은 테스트를 반복해서 실행할 수 있다.
하지만 중간에 오류가 발생해서 삭제 로직을 수행할 수 없다면 테스트를 반복해서 실행할 수 없다.

하지만 트랜잭션을 사용하면 이 문제를 해결할 수 있다.
다음 시간에 계속~

<출처>

스프링 DB 1편 - 데이터 접근 핵심 원리

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard

profile
"한 명이 걷는 천 걸음 보다 천 명이 함께 걷는 한 걸음이 성공의 시작이고 완성이다"

0개의 댓글