본문 바로가기

JavaStudy(open)/코딩

JdbcTemplate, JPA 삭제, 수정 기능 구현해보기

- JPA

  @Override
  public void delete(String name) {
//    Member member = findByName(name).orElseThrow(IllegalStateException::new);
//    Member deleteMember = em.find(Member.class, member.getId());
//    em.remove(deleteMember);

    findByName(name).ifPresent(member -> em.remove(member));
  }

  @Override
  public Member updateName(String name, String updateName) {
    findByName(name).ifPresent(member -> member.setName(updateName));
    return findByName(updateName).get();
  }

 

- JdbcTemplate 

@Override
  public void delete(String name) {
    jdbcTemplate.update("delete from member where name = ?", name);
  }

  @Override
  public Member updateName(String name, String updateName) {
    Member member = findByName(name).orElseThrow(IllegalStateException::new);
    jdbcTemplate.update("update member set name = ? where id = ?", updateName, member.getId());
    return findByName(updateName).get();
  }

 

- MemberServiceIntegrationTest

@Test
  public void 회원_삭제() {
    //Given
    Member member = new Member();
    member.setName("spring");
    memberService.join(member);

    //When
    memberService.deleteMember(member.getName());

    //Then 
    NoSuchElementException e = assertThrows(NoSuchElementException.class,
        () -> memberRepository.findByName("spring").get());  
        // ( 람다식을 실행하면 ) 예외가 발생해야 한다. 
  }

  @Test
  public void 회원_수정() {
    //Given
    Member member = new Member();
    member.setName("spring");
    memberService.join(member);

    //When
    Member result = memberService.updateName(member.getName(), "summer");

    //Then
    Assertions.assertThat(result.getId()).isEqualTo(member.getId());
    Assertions.assertThat(result.getName()).isEqualTo("summer");
  }