DTO는 Data Transfer Object 의 약자로 프로세스 간에 데이터를 전달하는 개체입니다. Web 서비스, 즉 Spring 환경에서의 DTO는 HTTP 요청의 데이터를 전달 받거나 계층(Controller, Service) 간의 이동 시에 사용 되는 객체라 이해하시면 좋을 것 같습니다.
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/member")
public class MemberController {
private final MemberService memberService;
@GetMapping("/{memberId}")
public MemberResponseDto getMemberInfo(
@PathVariable Long memberId
) {
return memberService.getMemberInfo(memberId);
}
}
@Service
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
public MemberResponseDto getMemberInfo(Long memberId) {
Member member = memberRepository.findById(memberId).orElseThrow(NullPointerException::new);
// Entity To DTO
MemberResponseDto responseDto = new MemberResponseDto(member);
return responseDto;
}
}
@Getter
public class MemberResponseDto {
private String username;
private int age;
public MemberResponseDto(Member member) {
this.username = member.getUsername();
this.age = member.getAge();
}
}
@Getter
@Entity
@NoArgsConstructor
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private int age;
private String rrn; // 주민번호, Resident Registration Number
}
public interface MemberRepository extends JpaRepository<Member, Long> {}