F-Lab
🚀
상위권 IT회사 합격 이력서 무료로 모아보기

MyBatis를 이용한 데이터베이스 연동 및 예외 처리

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

AI가 제공하는 얕고 넓은 지식을 위한 짤막한 글입니다!



MyBatis를 이용한 데이터베이스 연동 및 예외 처리

안녕하세요. 오늘은 MyBatis를 이용한 데이터베이스 연동 및 예외 처리에 대해 다뤄보겠습니다. 왜냐하면 MyBatis는 SQL을 직접 작성하여 데이터베이스와 상호작용할 수 있는 강력한 프레임워크이기 때문입니다.

MyBatis는 SQL 매퍼 프레임워크로, XML 또는 애노테이션을 사용하여 SQL 쿼리를 작성하고, 자바 객체와 매핑할 수 있습니다. 이는 복잡한 SQL 쿼리를 쉽게 관리하고, 데이터베이스와의 상호작용을 단순화하는 데 유용합니다.

이번 글에서는 MyBatis를 이용한 데이터베이스 연동과 예외 처리 방법을 단계별로 설명하겠습니다. 왜냐하면 이론만으로는 이해하기 어렵기 때문입니다.

그럼 시작해보겠습니다.



MyBatis의 기본 개념

MyBatis는 SQL 매퍼 프레임워크로, SQL 쿼리를 XML 파일이나 애노테이션으로 작성하고, 자바 객체와 매핑할 수 있습니다. 왜냐하면 이는 복잡한 SQL 쿼리를 쉽게 관리하고, 데이터베이스와의 상호작용을 단순화하는 데 유용하기 때문입니다.

MyBatis의 주요 구성 요소는 SqlSession, Mapper, XML 매퍼 파일입니다. SqlSession은 데이터베이스와의 세션을 관리하며, Mapper는 SQL 쿼리를 자바 메소드로 매핑합니다. XML 매퍼 파일은 SQL 쿼리를 정의하는 데 사용됩니다.

MyBatis는 SQL 쿼리를 직접 작성할 수 있기 때문에, 복잡한 쿼리나 성능 최적화가 필요한 경우에 유용합니다. 또한, MyBatis는 자바 객체와 SQL 쿼리 간의 매핑을 자동으로 처리하여 개발자의 부담을 줄여줍니다.

MyBatis를 사용하면, 데이터베이스와의 상호작용을 단순화하고, 코드의 가독성과 유지보수성을 높일 수 있습니다.

이제 MyBatis를 이용한 데이터베이스 연동 방법을 단계별로 설명하겠습니다.



MyBatis 프로젝트 설정

먼저, MyBatis 프로젝트를 생성하고 필요한 의존성을 추가하겠습니다. 왜냐하면 프로젝트 설정이 첫 번째 단계이기 때문입니다.

MyBatis 프로젝트를 생성하려면, Maven 또는 Gradle을 사용할 수 있습니다. 이번 예제에서는 Gradle을 사용하여 프로젝트를 설정하겠습니다.

아래는 build.gradle 파일의 예제입니다.

dependencies {
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'mysql:mysql-connector-java'
}

위 코드에서 필요한 의존성을 추가하였습니다. 이제 프로젝트를 빌드하고, 필요한 설정을 진행하겠습니다.

스프링 부트 애플리케이션의 진입점인 Application 클래스를 생성합니다.

@SpringBootApplication
public class MyBatisApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyBatisApplication.class, args);
    }
}

위 코드에서 @SpringBootApplication 어노테이션을 사용하여 스프링 부트 애플리케이션을 설정하였습니다.



MyBatis 매퍼와 XML 매퍼 파일 작성

이제 MyBatis 매퍼와 XML 매퍼 파일을 작성해보겠습니다. 왜냐하면 MyBatis의 핵심 기능이 매퍼와 XML 매퍼 파일이기 때문입니다.

먼저, 데이터베이스 테이블과 매핑되는 자바 객체를 작성합니다.

public class User {
    private Long id;
    private String username;
    private String password;

    // getters and setters
}

위 코드에서 User 클래스는 데이터베이스 테이블과 매핑되는 자바 객체입니다.

이제 MyBatis 매퍼 인터페이스를 작성합니다.

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM users WHERE id = #{id}")
    User findById(Long id);
}

위 코드에서 UserMapper 인터페이스는 SQL 쿼리를 자바 메소드로 매핑합니다. @Select 애노테이션을 사용하여 SQL 쿼리를 정의하였습니다.

이제 XML 매퍼 파일을 작성합니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
    <select id="findById" resultType="com.example.domain.User" parameterType="long">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

위 XML 매퍼 파일에서 findById 메소드를 정의하였습니다. 이 메소드는 SQL 쿼리를 실행하고, 결과를 User 객체로 매핑합니다.



MyBatis 예외 처리

이제 MyBatis를 이용한 예외 처리 방법을 설명하겠습니다. 왜냐하면 예외 처리는 프로그램의 안정성을 높이는 중요한 요소이기 때문입니다.

MyBatis는 SQL 쿼리 실행 중 발생할 수 있는 예외를 처리하기 위해 다양한 예외 클래스를 제공합니다. 예를 들어, SQLException, PersistenceException 등이 있습니다.

먼저, 예외 처리를 위한 사용자 정의 예외 클래스를 작성합니다.

public class CustomDatabaseException extends RuntimeException {
    public CustomDatabaseException(String message) {
        super(message);
    }
}

위 코드에서 CustomDatabaseException 클래스는 특정 상황에서 발생할 수 있는 사용자 정의 예외입니다.

이제 MyBatis 매퍼 인터페이스에서 예외 처리를 추가합니다.

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM users WHERE id = #{id}")
    default User findById(Long id) {
        try {
            return findByIdInternal(id);
        } catch (Exception e) {
            throw new CustomDatabaseException("데이터베이스 조회 중 오류 발생: " + e.getMessage());
        }
    }

    @Select("SELECT * FROM users WHERE id = #{id}")
    User findByIdInternal(Long id);
}

위 코드에서 findById 메소드에서 예외 처리를 추가하였습니다. 예외가 발생하면 CustomDatabaseException을 발생시킵니다.

이제 서비스 클래스에서 예외 처리를 확인해보겠습니다.

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User getUserById(Long id) {
        try {
            return userMapper.findById(id);
        } catch (CustomDatabaseException e) {
            // 예외 처리 로직
            System.err.println(e.getMessage());
            return null;
        }
    }
}

위 코드에서 getUserById 메소드에서 CustomDatabaseException을 처리하고 있습니다.



결론

오늘은 MyBatis를 이용한 데이터베이스 연동 및 예외 처리에 대해 다뤄보았습니다. 왜냐하면 MyBatis는 SQL을 직접 작성하여 데이터베이스와 상호작용할 수 있는 강력한 프레임워크이기 때문입니다.

MyBatis를 사용하면, 데이터베이스와의 상호작용을 단순화하고, 코드의 가독성과 유지보수성을 높일 수 있습니다. 또한, 예외 처리를 통해 프로그램의 안정성을 높일 수 있습니다.

이번 글에서 다룬 내용들을 실제 프로젝트에 적용해보시기 바랍니다. 왜냐하면 이론만으로는 이해하기 어렵기 때문입니다.

다음 글에서는 더 심화된 내용을 다뤄보겠습니다. 많은 기대 부탁드립니다.

감사합니다.

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수
F-Lab
소개채용멘토 지원
facebook
linkedIn
youtube
instagram
logo
(주)에프랩앤컴퍼니 | 사업자등록번호 : 534-85-01979 | 대표자명 : 박중수 | 전화번호 : 1600-8776 | 제휴 문의 : info@f-lab.kr | 주소 : 서울특별시 강남구 테헤란로63길 12, 438호 | copyright © F-Lab & Company 2025