JavaStudy(open)/코딩
JdbcTemplate, JPA 삭제, 수정 기능 구현해보기
핑구뱅구
2021. 8. 23. 00:58
- 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");
}