26일차
@RestController
@RequiredArgsConstructor
public class MemberController {
private final MemberService memberService;
}
@Service
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
}
Controller@PostMapping("/members")
public ResponseEntity<MemberSaveResponseDto> saveMember(@RequestBody MemberSaveRequestDto memberSaveRequestDto) {
return ResponseEntity.ok(memberService.saveMember(memberSaveRequestDto));
}
Service@Transactional // Request DTO -> entity -> Repository -> Response DTO ?
public MemberSaveResponseDto saveMember(MemberSaveRequestDto memberSaveRequestDto) {
Member newMember = new Member(memberSaveRequestDto.getName()); // Request DTO -> entity
Member saveMember = memberRepository.save(newMember); // entity -> Repository ?
return new MemberSaveResponseDto(saveMember.getName()); // Repository -> Response DTO ?
// MemberSaveResponseDto member = new MemberSaveResponseDto(saveMember.getId(), saveMember.getName());
// return member;
}
Postman
Controller@GetMapping("/members")
public ResponseEntity<List<MemberSimpleResponseDto>> getMemberList() {
return ResponseEntity.ok(memberService.getMemberList());
}
@GetMapping("/members/{id}")
public ResponseEntity<MemberSaveResponseDto> getMemberId(@PathVariable Long id) {
return ResponseEntity.ok(memberService.getMemberId(id));
}
Service// Repository -> List<Member> -> List<MemberSimpleResponseDto>
// Repository -> List<entity> -> List<Response DTO> ?
// CRUD중 R은 @Transactional 안붙임
public List<MemberSimpleResponseDto> getMemberList() {
List<Member> newMemberList = memberRepository.findAll(); // Repository -> List<Member> ?
List<MemberSimpleResponseDto> memberSaveResponseDtos = new ArrayList<>(); // List<MemberSimpleResponseDto> 생성
for (Member member : newMemberList) {
memberSaveResponseDtos.add(new MemberSimpleResponseDto(member.getId(), member.getName()));
} // newMemberList -> memberSaveResponseDtos
// List<Member> -> List<MemberSimpleResponseDto>
return memberSaveResponseDtos;
}
// Repository -> entity -> ResponseDTO
public MemberSaveResponseDto getMemberId(Long id) {
Member newMember = memberRepository.findById(id).orElseThrow(() -> new NullPointerException("id없다")); // Repository -> entity
return new MemberSaveResponseDto(newMember.getName());
// MemberSaveResponseDto responseDto = new MemberSaveResponseDto(newMember.getName()); // entity -> ResponseDTO
// return responseDto;
}
CRUD중 R은
@Transactional안붙임
Postman
Controller@PutMapping("/members/update/{id}")
public ResponseEntity<MemberUpdateResponseDto> updateMember(@RequestBody MemberUpdateRequestDto memberUpdateRequestDto, @PathVariable Long id) {
return ResponseEntity.ok(memberService.updateMember(memberUpdateRequestDto, id));
}
Service@Transactional // Repository -> entity -> entity RequestDTO 값받아서 수정 -> ResponseDTO
public MemberUpdateResponseDto updateMember(MemberUpdateRequestDto memberUpdateRequestDto, Long id) {
Member newMember = memberRepository.findById(id).orElseThrow(() -> new NullPointerException("id없다")); // Repository -> entity ?
newMember.update(memberUpdateRequestDto.getName()); // entity RequestDTO 값받아서 수정
return new MemberUpdateResponseDto(newMember.getId(), newMember.getName()); // entity -> ResponseDTO
}
Postman

Controller@DeleteMapping("/members/delete/{id}")
public String deleteMember(@PathVariable Long id) {
memberService.deleteMember(id);
return "삭제 완료";
}
Service@Transactional // Repository 에서 entity 찾고 Repository 에서 찾은 entity 삭제
public void deleteMember(Long id) {
memberRepository.delete(memberRepository.findById(id).orElseThrow(() -> new NullPointerException("id없다")));
}
Postman
