반응형
1. JDBC로 직접 연결
package com.koreait.persistence;
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.Test;
import lombok.extern.log4j.Log4j;
@Log4j
public class JDBCTests {
// static 블럭 : 클래스 로딩시 딱 한번만 수행되는 영역, 프로젝트 빌드시 가장 먼저 수행되는 영역이다.
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println(e);
}
}
@Test
public void connectionTest() {
// try(Statement) : 소괄호 안에 close를 필요로 하는 인스턴스를 작성하게 되면
// try문이 끝났을 때 자동으로 close()를 실행해준다.
try(
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/web0315",
"root",
"1234"
)
) {
log.info(conn);
} catch (Exception e) {
log.warn(e);
}
}
}
- 스프링이 관리해야할 것이 없고 그냥 이 파일에서만 사용하면 되므로 아무런 설정을 할 필요가 없다.
- static 블럭 : 클래스 로딩시 딱 한번만 수행되는 영역으로 프로젝트 빌드시 가장 먼저 수행되는 영역이다.
- try ~ catch문에서 try() 소괄호 안에 close를 필요로 하는 인스턴스를 작성하게 되면 try문이 끝났을 때 자동으로 close()가 되며 그 괄호 안의 것이 성공을 하면 try문이 실행되고 아니면 catch문이 실행된다.
2. DBCP로 연결
https://tadaktadak-it.tistory.com/94
- DBCP로 DB를 연결하기 위해 DataSource를 사용하였다.
- 스프링 프레임워크에서도 역시 hikari객체를 이용해서 DataSource를 만들어서 DBCP를 사용한다.
// root-context.xml에 추가
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/web0315"></property>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"/>
</bean>
- 실행을 하게 되면 root-context.xml을 들려서 bean객체를 만들어야 하므로 위 코드를 root-context.xml에 추가하게 되면 hikari 객체를 이용해 DataSource를 객체로 사용할 수 있게 된다.
package com.koreait.persistence;
import static org.junit.Assert.fail;
import java.sql.Connection;
import javax.sql.DataSource;
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 DataSourceTests {
// DBCP를 사용할 떄는 필요한 설정들을 context.xml에 작성했는데
// Spring이 관리하기 때문에 root-context.xml에 작성
// dataSource를 주입해줘야 하기 때문에 Spring 필요
@Setter(onMethod_ = @Autowired)
private DataSource dataSource;
@Test
public void connectionTest() {
try(
Connection conn = dataSource.getConnection();
){
log.info(conn);
} catch (Exception e) {
fail(e.getMessage());
}
}
}
- DataSource 객체를 주입하기 위해 스프링이 필요하기 때문에 @RunWith()와 @ContextConfiguration을 설정해줘야 한다.
- 그리고 의존성 주입이 필요하므로 @Setter도 설정해줘야 한다.
3. MyBatis로 연결
https://tadaktadak-it.tistory.com/98
- MyBatis는 pom.xml에 미리 라이브러리를 다운로드를 해줘야 하며 MyBatis도 역시 hikari 객체를 이용해서 생성한 DataSource를 이용해서 SqlSessionFactory를 생성해서 사용한다.
// root-context.xml에 추가
// hikari 객체
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/web0315"></property>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</bean>
// DataSource 객체
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"/>
</bean>
// SqlSessionFactory 객체
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
</bean>
- 위와 같이 DataSource를 이용해서 SqlSessionFactory객체를 bean으로 root-context.xml에 추가해준다.
package com.koreait.persistence;
import static org.junit.Assert.fail;
import java.sql.Connection;
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 MyBatisTests {
@Setter(onMethod_ = @Autowired)
private SqlSessionFactory factory;
@Test
public void connectionTest() {
try(
SqlSession sqlsession = factory.openSession(true);
Connection conn = sqlsession.getConnection();
) {
log.info("SqlSession : " + sqlsession);
log.info("Connection : " + conn);
}
catch (Exception e) {
fail(e.getMessage());
}
}
}
- Mybatis를 이용해 connection을 생성하기 위해서는 스프링을 이용해 주입을 해줘야 하기 때문에 @RunWith()와 @ContextConfiguration을 설정해줘야 한다.
반응형
'웹개발 > Spring' 카테고리의 다른 글
[Spring] 스프링 구동 순서/과정, MVC 구조, Front-Controller 패턴 (2) | 2022.07.03 |
---|---|
[Spring] 스프링 프레임워크에서 MyBatis 사용 (0) | 2022.07.03 |
[Spring] 의존성 주입 테스트, 테스트 환경 (0) | 2022.07.01 |
[Spring] Lombok 라이브러리 (0) | 2022.07.01 |
[Spring] 스프링 프레임워크에서의 프로젝트 (0) | 2022.07.01 |