▷ MyBatis란?
- MyBatis는 자바 기반의 오픈 소스 퍼시스턴스 프레임워크이다.
- DB에 접근하여 데이터를 조회, 추가, 수정, 삭제할 수 있는 기능을 제공함.
- MyBatis는 SQL 매핑을 통해 개발자가 직접 SQL 쿼리를 작성하고, 이를 자바 코드와 매핑하여 DB와 상호작용할 수 있게 해줌
▷ MyBatis의 주요 구성 요소
① XML 파일 매핑 : MyBatis는 DB 연산을 수행하기 위한 SQL 쿼리와 자바 객체 간의 매핑을 정의하는 XML 매핑 파일을 사용함. 이 매핑 파일은 DB 테이블과 자바 객체 간의 매핑 정보를 포함한다.
② SqlSessionFactory : SqlSessionFactory는 MyBatis의 핵심 인터페이스로, DB 연결과 트랜잭션 관리를 담당한다. SqlSessionFactory는 XML 매핑 파일을 로드하고 SQL 세션을 생성하는 역할을 수행함.
③ SqlSession : SqlSession은 개별 DB 연산을 수행하기 위한 인터페이스이다. SqlSession을 사용하여 SQL 쿼리를 실행하고, DB로부터 결과를 가져올 수 있음. 또한, SqlSession은 트랜잭션을 관리하는데 사용될 수도 있음.
④ Mapper 인터페이스 : MyBatis는 개발자가 직접 작성한 SQL 쿼리를 자바 메서드와 매핑하기 위해 Mapper 인터페이스를 사용함. Mapper 인터페이스는 XML 매핑 파일과 연결되어 SQL 쿼리의 실행을 처리함. 이를 통해 개발자는 SQL 쿼리를 자바 코드에서 분리하여 유지보수성을 높일 수 있음.
▷ MyBatis 주요 특징
① 유연한 SQL 매핑 : MyBatis는 직접 SQL을 작성하므로 복잡한 쿼리와 조건에 유연하게 대응할 수 있음. XML 매핑 파일에서 SQL을 작성하고, 필요에 따라 동적 SQL을 사용할 수 있음.
② 객체와 DB 간의 매핑 : MyBatis는 자바 객체와 DB 테이블 간의 매핑을 지원함. 객체와 테이블 간의 필드 매핑을 선언하고, 자동으로 데이터를 변환하여 객체로 가져올 수 있음.
③ 트랜잭션 관리 : MyBatis는 트랜잭션 관리를 위한 기능을 제공함. 개발자는 SqlSession을 사용하여 트랜잭션을 시작하고 Commit 또는 Rollback 할 수 있음.
④ 다양한 DB 지원 : MyBatis는 다양한 DB 시스템과 함께 사용할 수 있음. JDBC를 통해 다양한 DB 드라이버를 지원하며, 필요한 경우 특정 DB에 맞는 SQL을 작성할 수 있음
▶ SqlSessionFactory
- SqlSessionFactory는 MyBatis 핵심 인터페이스 중 하나로, DB 연결과 트랜잭션 관리를 담당하는 객체이다.
- XML 매핑 파일을 로드하고 SQL Session을 생성하는 역할을 수행함.
- SqlSessionFactory 인스턴스는 MyBatis 설정 파일에서 생성됨. 설정 파일에서 DB 연결 정보와 XML 매핑파일의 경로를 지정하여 SqlSessionFactory를 구성할 수 있음.
- 한번 생성된 SqlSessionFactory는 애플리케이션 전체에서 공유될 수 있으며, 필요할 때마다 SQL 세션을 생성하여 DB 연산을 수행할 수 있음
● SqlSessionFactory의 주요 역할 및 특징
① DB 연결 관리 : SqlSessionFactory는 DB와의 연결을 설정하고 관리함. DB 연결은 DB의 주소, 사용자 이름, 비밀번호 등의 정보를 사용하여 설정. 이러한 연결 정보를 사용하여 DB에 접속
② XML 매핑 파일 로드 : SqlSessionFactory는 XML 매핑 파일을 로드하여 MyBatis의 매핑 config를 구성함. XML 매핑 파일은 DB 테이블과 자바 객체 간의 매핑 정보를 포함하고 있으며, SqlSessionFactory는 이 정보를 사용하여 DB 연산을 수행함.
③ SQL 세션 생성 : SqlSessionFactory는 SQL 세션을 생성하는 역할을 수행함. SQL 세션은 개별적인 DB 연산을 수행하기 위한 인터페이스이다. Sql Session은 DB에 대한 작업을 수행하기 위한 다양한 메서드를 제공함.
④ 트랜잭션 관리 : SqlSessionFactory는 트랜잭션 관리를 지원함. 트랜잭션은 연속된 DB 연산을 그룹화하여 원자성, 일관성, 격리성, 지속성을 보장함. SqlSessionFactory를 통해 생성된 SQL 세션은 트랜잭션을 시작, 커밋 또는 롤백할 수 있는 메서드를 제공함.
▶ SqlSession
- SqlSession은 MyBatis에서 개별적인 DB연산을 수행하기 위한 인터페이스이다.
- SqlSession를 사용하여 SQL 쿼리를 실행하고, DB로부터 결과를 가져올 수 있음.
- 또한, 트랜잭션을 관리하는데 사용될 수도 있음.
- SqlSession은 SqlSessionFactory를 통해 생성됨. (DB 연결 정보와 XML 매핑 파일을 사용하여 SqlSession 생성)
- 중요한 점으로 SqlSession 사용 후에 반드시 close() 메서드를 호출하여 세션을 명시적으로 닫아야 함. (리소스 누수를 막기 위해)
● SqlSession의 주요 기능 및 특징
① SQL 실행 : SqlSession은 SQL 쿼리를 실행하기 위한 다양한 메서드를 제공함. 개발자는 SqlSession를 사용하여 SELECT, INSERT, UPDATE, DELETE 등의 DB 연산을 수행할 수 있음.
② 매개 변수 전달 : SqlSession의 SQL 실행 메서드는 필요한 경우 매개 변수를 전달할 수 있음. 매개 변수는 SQL 쿼리에 동적인 값을 전달하는데 사용됨. 예를 들어, "selectOne("selectUserById", userId)" 메서드와 같이 매개 변수를 전달하여 특정 사용자 조회 가능함.
③ 결과 처리 : SqlSession은 DB로부터 반환된 결과를 처리하는 메서드를 제공함. SELECT 쿼리의 결과는 자바 객체나 Collection 형태로 반환될 수 있음. 개발자는 SqlSession의 메서드를 사용하여 결과를 처리하고 필요한 형태로 변환할 수 있음.
④ 트랜잭션 관리 : SqlSession은 트랜잭션을 관리하기 위한 메서드를 제공함. 개발자는 commit() 메서드를 사용하여 트랜잭션을 커밋하거나, rollback() 메서드를 사용하여 트랜잭션을 롤백할 수 있음. 또한, SqlSession은 close() 메서드를 사용하여 사용이 완료된 세션을 닫을 수 있음.
⑤ 범위 지정 : SqlSession은 범위를 지정하여 사용할 수 있음. SqlSession의 인스턴스는 특정 DB 연산을 수행하는 동안 유효하며, 해당 연산이 완료되면 세션은 폐기됨. 개발자는 필요에 따라 SqlSession을 생성하고 닫을 수 있음.
'Spring' 카테고리의 다른 글
(Spring 관련 정보) Dispatcher Servlet, Filter, Interceptor에 대하여 (0) | 2023.07.18 |
---|---|
스프링 CRUD Library 프로그램 버전별 정리 後 (0) | 2023.07.17 |
(스프링 관련 정보) web.xml / servlet-context.xml / root-context.xml 에 대하여 (1) | 2023.07.16 |
페이지네이션 (Pagination) - Servlet 프로그래밍 (0) | 2023.07.08 |
Servlet 프로그래밍 (동적 Library CRUD 프로그램) (1) | 2023.07.02 |
댓글