2021. 3. 26. 12:44ㆍSpring/Spring[Info]
1. 커넥션 풀 설정
여러 명의 사용자를 동시에 처리해야 하는 웹의 경우 데이터베이스 연결을 이용할 때는
'커넥션 풀'을 이용한다.
Java에선 DataSource라는 인터페이스를 통해서 커넥션 풀을 사용합니다. 매번 데이터베이스와 연결하는 구조가 아닌, 미리 연결을 맺어주고 반환하는 구조를 이용하여 성능 향상을 꾀합니다.
- 커넥션 풀 - HikariCP 설정
0. ojdbc8 설정
[Spring][03-01]JDBC 연결 테스트 (Oracle DB 연결)
[Spring][03-01]JDBC 연결 테스트 (Oracle DB 연결)
개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다. git주소 : https://github.com/sjinjin7/blog_study 목표 JDBC에 대한 개념은 다음 링크를 참고 부탁드립니다. https..
kimvampa.tistory.com
1. 라이브러리 추가
Maven Repository: com.zaxxer " HikariCP
Maven Repository: com.zaxxer » HikariCP
Ultimate JDBC Connection Pool VersionRepositoryUsagesDate4.0.x4.0.3Central25Mar, 20214.0.2Central29Feb, 20214.0.1Central28Jan, 20214.0.0Central8Jan, 20213.4.x3.4.5Central301May, 20203.4.4Central1May, 20203.4.3Central36Apr, 20203.4.2Central224Jan, 20203.4.1
mvnrepository.com
2. DataSource 설정
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:XE"></property>
<property name="username" value="book_ex"></property>
<property name="password" value="book_ex"></property>
</bean>
<!-- HikariCP configuration -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
<constructor-arg ref="hikariConfig"></constructor-arg>
</bean>
root-content.xml에 Bean 설정
3. Test
package org.zerock.persistence;
import static org.junit.Assert.fail;
import java.sql.Connection;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class DataSourceTets {
@Setter(onMethod_ = @Autowired)
private DataSource dataSource;
@Test
public void testConnection() {
try (Connection conn = dataSource.getConnection()) {
System.out.println("=========testConnection==========");
log.info(conn);
System.out.println("===============================");
} catch (Exception e) {
fail(e.getMessage());
}
}
}
🗨️ MyBatis
SQL 매핑 프레임워크로 분류됩니다. 개발자들의 JDBC 코드의 복잡하고 지루한 작업을 피하는 용도로 많이 사용됩니다.
1. MyBatis 관련 라이브러리 추가
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
총 4개의 라이브러리 추가
- spring-jdbc / spring-tx : 스프링에서 데이터베이스 처리와 트랜잭션 처리 (미추가시 오류)
- mybatis / mybatis-spring : MyBatis와 스프링 연동용 라이브러리
2. SQLSessionFactory 설정
MyBatis에서 가장 핵심적인 객체는 SQLSession이라는 존재와 SQLSessionFactory입니다.
- SQLSession : Connection 객체를 생성
- SQLSessionFactory : SQLSession 객체를 생성, 결과를 리턴 받는 구조
root-context.xml > Namespaces > mybatis-spring 체크
<!-- SQL Session -->
<bean id="sqlSessionFatory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
<mybatis-spring:scan base-package="org.zerock.mapper" />
root-context.xml 추가
3. Mapper 사용 ( XML사용과 Java 어노테이션 사용 2가지 방법 )
package org.zerock.mapper;
import org.apache.ibatis.annotations.Select;
public interface TimeMapper {
// Java 어노테이션을 이용
@Select("Select sysdate from dual")
public String getTime();
// Mapper XML 이용
public String getTime2();
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="org.zerock.mapper.TimeMapper">
<select id="getTime2" resultType="string">
SELECT sysdate from dual
</select>
</mapper>