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

minwoo Jeon님의 프로필 이미지
minwoo Jeon

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

회원 조회 API

Mybatis만 사용하는 경우의 Data Class 구조에 조언 구합니다.

해결된 질문

작성

·

1K

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예 - 부분적인 관련이긴 합니다ㅜ)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
JPA를 사용하는 경우 Entity와 request/response(DTO)를 구분하는 부분은 충분히 공감하였습니다.
그러면 혹시 Mybatis만을 활용하여 SQL로 바로 접근하는 프로젝트의 경우도 JPA와 같이 DB 계층(Entity/Repository)과 그 외 계층(DTO - Controller/Service)을 구분하여 Data Class를 설계하는 것이 필요할까요?

현재 프로젝트는 Mybatis만을 사용하고 있으며 각 요청과 응답에 대해서는 request와 response DTO를
각각 생성하여 사용하고 있는 상황입니다.
강의를 듣다보니 여기에 추가적으로 DB 계층으로 접근할 때의 Data Class를 추가하여
접근하는 것이 필요하지 않을까 해서 질문 드리게 되었습니다. 강의 내용과 조금 거리가 있을 수 있으나 궁금함이 생겨 간단한 의견이라도 부탁 드립니다.

답변 2

1

안녕하세요. minwoo Jeon님, 공식 서포터즈 코즈위버입니다.

Controller / Service / Repository 분리는 현재 보편적이며 코드를 목적에 따라 분리할 수 있기에 좋은 방법입니다. 관리하시는 프로젝트의 규모에 따라 이런 코드 분리가 번거로워 보일수는 있습니다. 그러나, 각 메소드가 최소한의 기능을 갖도록 작게 만드는것은 일반적으로 권장할 만한 방법입니다 :)

감사합니다.

1

안녕하세요, 인프런 AI 인턴이에요.

MyBatis만을 사용하는 경우에도 데이터 클래스의 구조를 어떻게 설계할지에 대한 조언을 원하시는 것 같아요.

JPA를 사용하는 경우와 마찬가지로, MyBatis에서도 DB 계층과 그 외 계층을 구분하는 것이 좋습니다. 이렇게 구분하면 코드의 유지보수와 가독성을 향상시킬 수 있습니다.

DB 계층은 주로 Mapper와 DAO 클래스로 구성되며, SQL 쿼리와 직접적인 상호작용을 담당합니다. 이 부분에서는 테이블과 매핑되는 Entity 클래스를 사용하는 것이 일반적입니다. Entity 클래스는 DB 테이블의 컬럼과 필드를 매핑하고, 데이터베이스의 데이터를 나타내는 역할을 합니다.

그 외에 Controller와 Service 계층은 요청과 응답을 다루는 역할을 수행하며, 이 부분에서는 요청과 응답에 필요한 데이터를 담는 DTO(Data Transfer Object) 클래스를 사용하는 것이 좋습니다. DTO 클래스는 비즈니스 로직과 상관없이 오로지 데이터 전달의 목적으로 사용됩니다.

따라서, MyBatis만을 사용하는 프로젝트의 경우에도 DB 계층과 DTO 계층을 구분하여 Data Class를 설계하는 것을 추천드립니다. 이렇게 구조화된 코드는 가독성과 확장성을 높일 수 있으며, 유지보수에 도움이 될 것입니다.

간단한 의견을 제시해드렸지만, 위의 내용은 일반적인 가이드라인이며 프로젝트의 규모와 요구사항에 따라 다를 수 있습니다. 프로젝트의 특성에 맞게 설계 결정을 하시면 될 것 같습니다.

추가적인 질문이 있으시면 언제든지 물어보세요. 좋은 결과가 있기를 바래요. 수고하세요!

minwoo Jeon님의 프로필 이미지
minwoo Jeon

작성한 질문수

질문하기