티스토리 뷰

WEB/자바

Java- Controller / Service/ Dto / Xml

silverline79 2026. 3. 25. 21:14

Java 스프링(Spring) 기반 웹 애플리케이션에서 **Controller, Service, DTO, VO, XML(MyBatis)**은 데이터를 주고받고 처리하는 표준적인 '레이어드 아키텍처(Layered Architecture)'의 핵심 구성 요소입니다.

이들의 흐름과 역할을 이해하기 쉽게 정리해 드릴게요.


1. 데이터 흐름도

사용자의 요청이 들어와서 DB를 거쳐 다시 응답으로 나가는 과정은 보통 다음과 같습니다.

ClientControllerServiceRepository(Mapper)XML(DB)


2. 각 구성 요소의 역할

📂 Controller (제어자)

  • 역할: 클라이언트의 요청(HTTP Request)을 가장 먼저 받는 관문입니다.
  • 특징: 어떤 URL로 들어온 요청인지 판단하고, 비즈니스 로직을 처리하기 위해 Service를 호출합니다. 최종적으로 사용자에게 결과(HTML 또는 JSON)를 반환합니다.

📂 Service (비즈니스 로직)

  • 역할: 실제 핵심 업무(비즈니스 로직)를 수행합니다.
  • 특징: 예를 들어 "주문" 요청이 들어오면 "재고 확인 -> 결제 처리 -> 배송 생성"이라는 여러 단계를 하나의 작업 단위(Transaction)로 묶어서 처리합니다.

📂 DTO vs VO (데이터 객체)

많은 분이 헷갈려 하시는 부분인데, 용도가 명확히 다릅니다.

구분 DTO (Data Transfer Object) VO (Value Object)
목적 계층 간 데이터 전달을 위한 바구니 값 자체를 나타내는 객체
가변성 가변적 (Setter 존재 가능) 불변적 (Read-Only, Getter만 존재)
특징 로직을 갖지 않는 순수 데이터 객체 값이 같으면 동일한 객체로 취급 (equals 재정의)

📂 Repository / Mapper (데이터 접근)

  • 역할: DB에 직접 접근하는 계층입니다.
  • 특징: 스프링에서는 보통 인터페이스로 선언하며, 실제 쿼리는 XML 파일과 연결됩니다.

📂 XML (MyBatis SQL)

  • 역할: 자바 코드에서 SQL을 분리하여 관리하는 파일입니다.
  • 특징: id값을 통해 Mapper 인터페이스의 메서드와 매핑되며, 복잡한 쿼리를 관리하기 좋습니다.

3. 실제 연결 예시

사용자가 회원 정보를 조회하는 과정을 코드로 연결해 보겠습니다.

  1. DTO/VO 정의:
  2. Java
     
    public class UserDTO {
        private String id;
        private String name;
        // Getter, Setter...
    }
    
  3. Controller:
  4. Java
     
    @RestController
    public class UserController {
        @Autowired private UserService userService;
    
        @GetMapping("/user/{id}")
        public UserDTO getUser(@PathVariable String id) {
            return userService.findUser(id); // 서비스 호출
        }
    }
    
  5. Service:
  6. Java
     
    @Service
    public class UserService {
        @Autowired private UserMapper userMapper;
    
        public UserDTO findUser(String id) {
            return userMapper.selectUserById(id); // 매퍼 호출
        }
    }
    
  7. XML (MyBatis):
  8. XML
     
    <select id="selectUserById" resultType="UserDTO">
        SELECT id, name FROM users WHERE id = #{id}
    </select>
    

요약하자면

  • Controller는 길잡이 역할을 하고,
  • Service는 실제 일(로직)을 하며,
  • DTO는 데이터를 담아 나르고,
  • XML은 DB에게 시킬 명령(SQL)을 적어둔 명세서입니다.

※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함