반응형
# MVC05_01 JDBC와 MyBatis 설정
## MVC04 import 하여 MVC05로 변경
- Project Explorer 에서 빈 공간 우 클릭 > Import > MVC04 WAR File 찾아서 클릭 후 프로젝트 이름을 MVC05로 변경
## 톰캣 서버 등록
- Servers > 톰캣 우 클릭 > Add and Remove > Available 에서 MVC05 클릭 후 Add하여 Configured로 이동 후 Finish.
## 톰캣 서버 등록 확인
- Servers > 톰캣 서버 더블클릭 > Modules에 MVC05 정상적으로 등록되어있는지 확인.
## 기존 JDBC와 MyBatis
1. 기존 JDBC
- 소스코드 안에 중요 정보(데이터베이스 접속 정보, 아이디, 패스워드 등) 포함.
- 자바 소스코드 + SQL 명령문이 섞어있어(임베디드) 유지보수 시 문제 발생 가능성 존재.
- JDBC 이용 시 개발자가 모두 직접해야 하기 때문에 개발 속도가 상당히 늦어진다.
- 그래서 이러한 단점 등을 해결하기 위해 MyBatis API를 이용 할 예정.
2. MyBatis
- MyBatis의 핵심은 기존 JDBC (자바 소스코드 + SQL)에서 자바 소스코드와 SQL 쿼리를 분리 시키자는 것.
- 자바 소스코드에서 분리된 SQL과 어떻게 연결해서 사용할지에 대한 방법론과 이 방법론을 실제 구현해 줄 API가 MyBatis이다.
- MyBatis란 자바에서 SQL Mapping해서 사용하는 프레임워크, 한마디로 SQL Mapping Framework
## MyBatis 설정 파일 3개.
- 프로젝트 > src 에서 마우스 우 클릭 > Package > kr.bit.mybatis 이름의 패키지 생성
- MyBatis 이용을 위해서는 기본적으로 3개의 설정 파일 필요.
- https://blog.mybatis.org/p/products.html
- 위 사이트에서 MyBatis3의 docs 클릭 > Getting started 에서 필요한 설정 파일 확인.
- https://mybatis.org/mybatis-3/getting-started.html
1. The configuration XML File (MyBatis 환경설정 파일) => 가장 중요
- 아래와 같은 형식의 파일.
- 해당파일로 연결을 하기 떄문에 3개의 설정 파일 중 가장 중요하다.
<?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>
- 프로젝트 우 클릭 > src > 생성한 패키지(kr.bit.mybatis) 우 클릭 > New > Other >XML File 클릭 후 Next > config.xml 이름의 xml 파일 생성
2. Properties File (데이터베이스 접속 URL, 드라이버 정보, 사용자 ID, PW 등의 정보를 저장해 주는 파일)
- 프로젝트 우 클릭 > src > 생성한 패키지(kr.bit.mybatis) 우 클릭 > New > Other > File 클릭 후 db.properties 이름의 파일 생성.
- properties 파일은 key=value 형식으로 저장
- 아래와 같이 작성(공백 없도록 주의)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&serverTimeZone=UTC
username=root
password=비밀번호
3. Mapper XML File (SQL 문장을 저장할 파일)
- 아래와 같은 형식의 파일.
<?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>
- 프로젝트 우 클릭 > src > 생성한 패키지(kr.bit.mybatis) 우 클릭 > New > Other >XML File 클릭 후 Next > MemberMapper.xml 이름의 xml 파일 생성
# MVC05_02 Connection Pool
## MyBatis API 설치
- MyBatis 사이트 진입 > Products > MyBatis3 의 download 클릭 > mybatis-3.4.6 클릭 > Assets의 mybatis-3.4.6.zip 파일 다운로드
- https://github.com/mybatis/mybatis-3/releases
- 다운로드 받은 mybatis-3.4.6 압축해제 후 mybatis-3.4.6.jar 파일을 복사해서 프로젝트 > WebContent > WEB-INF > lib에 복사
## Connection Pool 기법
- 자바에서 데이터베이스를 연동하기위해 Connection이 필요. 이때 Connection에 부하가 많이 걸리는데, JDBC에서는 DB에 연결할 일이 생길 때 Connection을 생성, 사용 후 Connection을 끊는데.. 유저가 많아지면 점점 부하가 많이 걸리게 된다.
- MyBatis는 위 과정에서 Connection을 사용 후 Connection을 제거하는게 아닌, 재활용하자는 취지. (성능 개선)
- MyBatis는 여러개의 커넥션을 메모리에 미리 생성. (Connection Pool)
- DB작업을 위해 자바에서 Connection Pool에 미리 만들어진 커넥션을 꺼내와서 사용 후 반환(객체 사용 후 반환)
- JDBC에서는 연결된 객체를 Connection 라고 부르고, MyBatis에서는 Connection을 sqlSession이라고 부른다.
## sqlSessionFactory
- 기존 MemberDAO에서 DB 관련 연결 소스코드 제거.
- config.xml로부터 sqlSessionFactory 생성을 위해 코드 작업
package kr.bit.model;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
// JDBC -> MyBatis
public class MemberDAO {
private static SqlSessionFactory sqlSessionFactory; // DB를 연결하고 있는 객체들이 존재.
// 초기화 블럭 => 프로그램 실행 시 딱 한번만 실행되는 코드.
static {
try {
String resource = "kr/bit/mybatis/config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource); // 읽기
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
}
반응형
'인프런 강의 학습 > MVC 프레임워크_나프2탄' 카테고리의 다른 글
인프런 나프_2탄 6일차 : MVC06_03~05 세션 (0) | 2021.06.26 |
---|---|
인프런 나프_2탄 5일차 : MVC06_01~02 회원 로그인 페이지 작성, 회원 로그인 기능(세션 바인딩) (0) | 2021.06.25 |
인프런 나프_2탄 4일차 : MVC05_05 마무리 (0) | 2021.06.24 |
인프런 나프_2탄 3일차 : MVC05_03~04 JDBC를 MyBatis로 변경 (0) | 2021.06.24 |
인프런 나프_2탄 1일차 : 개발환경 구축, 데이터베이스 설정 (0) | 2021.06.22 |