본문 바로가기

웹 개발/JSP

[Web_JSP] 07

●​ DBCP(DataBase Connection Pool)

- 사용자 요청이 있을 때 마다 DB 연결을 한다면 코드가 복잡해지며, 많은 요청이 있을 때 연결 속도가 저하될 수 있다.

- 따라서 미리 Connection을 만들어 두고, 필요 시 저장된 공간에서 가져다 쓴 후 반환하는 기법이다.

 

 

 

●​ JNDI(Java Naming and Directory Interface)

- 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고하기 위한 자바 API이며, 외부에 있는 객체를 가져오기 위한 기술이다.

 

 

 

●​ MyBatis Framework

- 소스코드 안에 SQL문을 작성하면 코드가 길어지고 섞여 있어서 유지보수 및 분업이 쉽지 않다.

- MyBatis는 기존 JDBC 방식과는 달리 SQL문을 XML 파일에 작성함으로써 코드가 줄어들고 SQL문 수정이 편해진다.

- DBCP를 사용하여 커넥션을 여러 개 생성하기 때문에 JDBC만 사용하는 것 보다는 작업 효율과 가독성이 좋아진다.

 

 

 

●​ MyBatis 작동 순서

1. 응용 프로그램이 SqlSessionFactoryBuilder를 통해 SqlSessionFactory를 빌드하도록 요청한다.

2. SqlSessionFactoryBuilder는 SqlSessionFactory를 생성하기 위한 MyBatis 구성 파일을 읽는다.

3. SqlSessionFactoryBuilder는 MyBatis 구성 파일의 정의에 따라 SqlSessionFactory를 생성한다.

4. 클라이언트가 응용 프로그램에 대한 프로세스를 요청한다.

5. 응용 프로그램은 SqlSessionFactoryBulider를 사용하여 빌드된 SqlSessionFactory에서 SqlSession을 가져온다.

6. SqlSessionFactory는 SqlSession을 생성하고 이를 응용 프로그램에 반환한다.

7. 응용 프로그램이 SqlSession에서 Mapper Interface의 구현 개체를 가져온다.

8. 응용 프로그램이 Mapper Interface 메소드를 호출한다.

9. Mapper Interface 구현 객체가 SqlSession 메소드를 호출하고 SQL 실행을 요청한다.

10. SqlSession은 매핑 파일에서 실행할 SQL을 가져와 SQL을 실행한다.

 

 

 

●​ MyBatis 설치

https://blog.mybatis.org/p/products.html

 

 

 

 

실습(MyBatis)

1. 프로젝트명 우클릭 > Build Path > Libraries - Classpath > Add External JARs > mybatis-3.5.9.jar 추가

 

 

 

2. 프로젝트명 > WebContent > WEB-INF > lib 경로에 mybatis-3.5.9.jar 추가

 

 

 

3. dBeaver에서 Script 파일 생성 후 database 생성

create database form;
use form;

 

 

 

4. config.xml 생성 및 코드 작성

<?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="mysql">
		<environment id="mysql">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/form"/>
				<property name="username" value="root"/>
				<property name="password" value="1234"/>
			</dataSource>
		</environment>
	</environments>
</configuration>

 

 

 

5. MyBatisConfig.java 생성 및 코드 작성

package com.mybatis.config;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisConfig {
	
	private static SqlSessionFactory sqlSessionFactory;
	
	static {
		try {
			String resource = "./com/mybatis/config/config.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static SqlSessionFactory getSqlSessionFactory() {
		return sqlSessionFactory;
	}
}

 

 

 

 

'웹 개발 > JSP' 카테고리의 다른 글

[Web_JSP] 09  (0) 2022.05.28
[Web_JSP] 08  (0) 2022.05.27
[Web_JSP] 06  (0) 2022.05.24
[Web_JSP] 05  (0) 2022.05.23
[Web_JSP] 04  (0) 2022.05.22