강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

eunseo lay님의 프로필 이미지
eunseo lay

작성한 질문수

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문

작성

·

22

0

안녕하세요. 좋은 강의를 제공해주셔서 감사합니다.

현재 코틀린과 자바를 함께 사용하는 프로젝트를 준비 중입니다.

그 과정에서 DTO를 구현할 때, 코틀린에서는 data class라는 매우 편리한 기능이 있다는 것을 알게 되었고, 이와 관련해서 질문이 있습니다.

궁금한 점은,
실무(특히 스프링 기반 개발)에서는 DTO를 작성할 때 자바의 Lombok을 주로 사용하는지, 아니면 코틀린의 data class를 더 많이 사용하는지입니다.
또한, 두 방식의 차이점과 선택 기준에 대해서도 알고 싶습니다.

감사합니다!

답변 1

0

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요! 🙂 eunseo lay님~ 질문 주셔서 감사합니다.

실무(특히 스프링 기반 개발)에서는 DTO를 작성할 때 자바의 Lombok을 주로 사용하는지, 아니면 코틀린의 data class를 더 많이 사용하는지입니다.
또한, 두 방식의 차이점과 선택 기준에 대해서도 알고 싶습니다.

에 대해서 답변 드려 보면

 

대부분의 프로젝트는 단일 언어로 구성되는 경우가 많습니다. (물론 하나의 시스템은 여러 컴포넌트로 구성되고 각 컴포넌트는 또 다시 여러 프로젝트로 구성되어 상호 간의 언어가 다를 수 있죠!) 때문에 다음과 같이 경우의 수를 나눠서 설명 드리겠습니다.

  1. JDK 17 이상의 자바 프로젝트

    1. JDK 버전이 17 이상이라면 record class를 언어 레벨에서 정식 지원하기에 굳이 lombok을 사용할 필요가 없어집니다. 때문에 recor class를 쓰시면 되어요!

  2. JDK 17 이전의 자바 프로젝트

    1. 만약 JDK 17 이전이라면 lombok을 사용하시면 됩니다. 1번, 2번 경우 모두 자바로 구성된 단일 프로젝트라 data class와 lombok을 고민하지 않아도 됩니다.

  3. 코틀린 프로젝트

    1. 반대로 코틀린 프로젝트인 경우는 당연히 data class를 사용하시면 됩니다. 이 경우도 고민할 필요가 없죠.

  4. 자바와 코틀린이 혼재되어 있는 프로젝트

    1. 이 경우를 상정하고 질문 주신 것 같아요. 두 언어가 혼재되어 있다면 사실 어디론가 이동하는 중간 과정일 확률이 매우 높습니다. 같은 JDK-based 언어라서 굳이 언어를 둘 다 사용할 필요가 없거든요. 때문에 이 프로젝트가 가장 이상적으로 되었을 때 자바만 남을지, 코틀린만 남을지를 팀원분들과 함께 고민해보시고, 결론에 따라 위 1~3번 중 하나를 사용하시면 됩니다.

 

답변을 보시면 아시겠지만, 결론적으로 코틀린 data class와 java lombok을 고민하는 경우는 거의 없었어요! 제가 지나온 대부분의 프로젝트는 최근 몇 년간 kotlin 으로 구성되어 있어 data class만 위주로 사용했습니다.

답변이 도움이 되었으면 좋겠습니다. 감사합니다. 🙇

eunseo lay님의 프로필 이미지
eunseo lay

작성한 질문수

질문하기