MyBatis란? - 공식문서

개발하는자·2022년 9월 13일
0

MyBatis

목록 보기
1/1
post-thumbnail




공식문서를 단순 정리한 게시글입니다. ( mybatis > 시작하기 )

마이바티스란?


마이바티스란 개발자가 지정한 SQL, 저장 프로시저(Stored Procedure) 그리고 몇가지 고급 매핑을 지원하는 프레임워크입니다. 마이바티스는 JDBC로 처리하는 코드 상당부분과 파라미터 설정, 결과 매핑을 대신해줍니다.





MyBatis 설치


  1. jar 파일을 클래스패스에 두기

https://github.com/mybatis/mybatis-3/releases



  1. 메이븐에 설정 추가 (pom.xml)
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>





XML에서 SqlSessionFactory 빌드하기

모든 마이바티스 애플리케이션은 SqlSessionFactory 인스턴스를 사용합니다. SqlSessionFactory인스턴스는 SqlSessionFactoryBuilder를 사용하여 만들 수 있습니다. SqlSessionFactoryBuilder는 XML설정파일에서 SqlSessionFactory인스턴스를 빌드할 수 있습니다.

XML설정파일에서 지정하는 마이바티스의 핵심이 되는 설정은 트랜잭션을 제어하기 위한 TransactionManager과 함께 데이터베이스 Connection인스턴스를 가져오기 위한 DataSource 를 포함합니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

XML 가장 위 부분에서는 XML 문서의 유효성체크를 하고, environment 엘리먼트는 트랜잭션 관리와 커넥션 풀링을 위한 환경 설정을 나타냅니다. mappers 엘리먼트는 SQL 코드와 매핑 정의를 가지는 XML 파일인 mapper의 목록을 지정합니다.





XML 을 사용하지 않고 SqlSessionFactory 빌드하기

XML을 사용하지 않고 자바 코드로 설정하기 위해서는 Configuration 클래스를 사용할 수 있습니다.

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

이 설정에서 추가적으로 Mapper 클래스를 추가해줘야합니다.





SqlSessionFactory 에서 SqlSession 만들기

SqlSessionFactory 이름을 보면 알 수 있듯이 SqlSession 인스턴스를 만들 수 있습니다. SqlSession 은 데이터베이스에 대해 SQL명령어를 실행하기 위해 필요한 모든 메소드를 가지고 있습니다. 그래서 SqlSession 인스턴스를 통해 직접 SQL 구문을 실행할 수 있습니다.

ex)

try (SqlSession session = sqlSessionFactory.openSession()) {
  Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
}

or

try (SqlSession session = sqlSessionFactory.openSession()) {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  Blog blog = mapper.selectBlog(101);
}





매핑된 SQL 구문 살펴보기

마이바티스가 제공하는 대부분의 기능은 XML을 통해 매핑 기법을 사용합니다. SqlSession을 호출하는 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="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

여기선 org.mybatis.example.BlogMapper 네임스페이스에서 selectBlog라는 매핑 구문을 정의했고 이는 결과적으로 org.mybatis.example.BlogMapper.selectBlog형태로 실제 명시되게 됩니다. 다음 코드와 같습니다.

Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);





매퍼 설정

https://mybatis.org/mybatis-3/ko/configuration.html#properties





Mapper XML 파일

https://mybatis.org/mybatis-3/ko/sqlmap-xml.html





동적 SQL

https://mybatis.org/mybatis-3/ko/dynamic-sql.html





profile
To the moon.

0개의 댓글