제시하신 MyBatis, MVC 패턴, JPA는 Java 기반의 웹 애플리케이션 개발, 특히 데이터베이스 연동과 아키텍처 설계에 핵심적인 개념들입니다. 각각에 대해 자세히 설명해 드리겠습니다.


1. MyBatis (마이바티스)

MyBatis는 자바에서 데이터베이스 프로그래밍을 쉽게 할 수 있도록 도와주는 영속성 프레임워크(Persistence Framework) 또는 SQL Mapper입니다.

🔑 핵심 역할: SQL과 객체(Object) 매핑

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 문장을 유연하게 조립할 수 있습니다.

🔍 동작 원리

  1. 매퍼(Mapper) 인터페이스 정의 (DAO): 개발자가 SQL을 실행할 메서드(예: selectUserList())를 정의합니다.
  2. XML 매퍼 파일 작성: 해당 메서드 이름과 연결될 SQL 쿼리를 <select>, <insert> 등의 태그를 사용하여 XML 파일에 작성합니다.
  3. 실행: 애플리케이션이 메서드를 호출하면, MyBatis는 내부적으로 XML 파일에서 해당 SQL을 찾아 데이터베이스에 전달하고, 결과를 자동으로 Java 객체로 변환하여 반환합니다.

2. MVC 패턴 (Model-View-Controller)

MVC 패턴은 사용자 인터페이스를 가지는 애플리케이션을 개발할 때, **관심사의 분리(Separation of Concerns)**를 목적으로 코드를 세 가지 역할로 나누어 구조화하는 디자인 패턴입니다.

🧩 MVC 패턴 구성 요소

요소 역할 상세 설명
Model (모델) 데이터와 비즈니스 로직 애플리케이션의 데이터(DB 접근 등)와 데이터를 처리하는 로직을 담당합니다. 사용자 인터페이스에 독립적입니다. (DAO, Service 클래스)
View (뷰) 사용자 인터페이스 (화면) 사용자에게 데이터를 보여주고(출력), 사용자의 입력(버튼 클릭 등)을 받습니다. 데이터를 변경하지 않고 표시만 담당합니다. (JSP, HTML)
Controller (컨트롤러) 중재자 및 흐름 제어 사용자의 **요청(Request)**을 받아, 모델(데이터 처리)에 전달하고, 모델의 결과를 받아 적절한 뷰를 선택하여 사용자에게 응답(Response)을 전달합니다.

🔄 MVC 흐름

  1. 사용자가 View에서 요청을 보냄.