제시하신 MyBatis, MVC 패턴, JPA는 Java 기반의 웹 애플리케이션 개발, 특히 데이터베이스 연동과 아키텍처 설계에 핵심적인 개념들입니다. 각각에 대해 자세히 설명해 드리겠습니다.
MyBatis는 자바에서 데이터베이스 프로그래밍을 쉽게 할 수 있도록 도와주는 영속성 프레임워크(Persistence Framework) 또는 SQL Mapper입니다.
MyBatis의 주된 역할은 개발자가 직접 작성한 SQL 쿼리문을 애플리케이션 코드와 분리하고, 그 결과를 **Java 객체(VO/DTO)**나 Map에 자동으로 매핑(Mapping)해주는 것입니다.
| 특징 | 설명 |
|---|---|
| SQL Mapper | 개발자가 SQL 쿼리를 XML 파일에 직접 작성합니다. MyBatis는 이 SQL을 실행하고 그 결과를 Java 객체로 변환해 줍니다. |
| SQL 분리 | Java 코드 내부가 아닌 별도의 XML 파일에 SQL을 관리하여, 코드와 쿼리의 **분리(Separation of Concerns)**가 명확해지고 유지보수가 쉬워집니다. |
| 유연성 | 개발자가 직접 SQL을 작성하므로, 복잡하고 고성능이 필요한 쿼리나 데이터베이스의 **특정 기능(저장 프로시저, 윈도우 함수 등)**을 자유롭게 활용할 수 있습니다. |
| 동적 쿼리 | <if>, <where>, <foreach> 등의 동적 SQL 태그를 제공하여, 조건에 따라 SQL 문장을 유연하게 조립할 수 있습니다. |
selectUserList())를 정의합니다.<select>, <insert> 등의 태그를 사용하여 XML 파일에 작성합니다.MVC 패턴은 사용자 인터페이스를 가지는 애플리케이션을 개발할 때, **관심사의 분리(Separation of Concerns)**를 목적으로 코드를 세 가지 역할로 나누어 구조화하는 디자인 패턴입니다.
| 요소 | 역할 | 상세 설명 |
|---|---|---|
| Model (모델) | 데이터와 비즈니스 로직 | 애플리케이션의 데이터(DB 접근 등)와 데이터를 처리하는 로직을 담당합니다. 사용자 인터페이스에 독립적입니다. (DAO, Service 클래스) |
| View (뷰) | 사용자 인터페이스 (화면) | 사용자에게 데이터를 보여주고(출력), 사용자의 입력(버튼 클릭 등)을 받습니다. 데이터를 변경하지 않고 표시만 담당합니다. (JSP, HTML) |
| Controller (컨트롤러) | 중재자 및 흐름 제어 | 사용자의 **요청(Request)**을 받아, 모델(데이터 처리)에 전달하고, 모델의 결과를 받아 적절한 뷰를 선택하여 사용자에게 응답(Response)을 전달합니다. |