스프링

Spring JDBC

짱코딩러 2022. 10. 20. 16:15

 

사전세팅

pom.xml

스프링,자바 버전에 맞게 숫자 수정, 서블릿 앞에 javax. 적어주기

spring-tx,spring-jdbc,spring-test

HikariCP, MyBatis, mybatis-spring, Log4jdbc 라이브러리 추가

jUnit 버전 변경, maven 버전 변경, Lombok 추가

Build Path 라이브러리에 ojdbc.jar 추가

 

테이블 생성, pk이름 부여해주기

 

root-context.xml(DB설정)

mybatis-spring Namespaces 추가, dataSource 설정, MyBatis 설정

context, mybatis-spring 체크,,,

 

src/main/resources에 log4jdbc.log4j2.properties 파일 추가

 

 

DB테스트

DataSource와 MyBaris가 연결되었는지 체크하기 위해 파일 추가

src/text/java /org.zerock.persistence/JDBCTests.java, DataSourceTests.java

JDBCTests.java  : DB연결 됐는지

import static org.junit.Assert.fail;

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("oracle.jdbc.driver.OracleDriver");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	@Test
	public void testConnection() {
    //try(여기 괄호안에 넣으면 자동으로 Close() 해줌)
		try (Connection con =
					DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE",
							"book_ex",
							"book_ex")){
				log.info(con);
		} catch (Exception e) {
			fail(e.getMessage());
		}
	}
}

DataSourceTests.java  : 빈으로 등록된 DataSource로 잘 연결되고 있는지!

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 DataSourceTests {

	//root-context에서 hikari로 담아둔걸 꺼내는 중
	@Setter(onMethod_ = { @Autowired })
	private DataSource dataSource;
	
	@Setter(onMethod_ = { @Autowired })
	private SqlSessionFactory sqlSessionFactory;
 
	@Test
	public void testMybatis() {
		try (SqlSession session = sqlSessionFactory.openSession();
				Connection con = session.getConnection()) {
			log.info(session);
			log.info(con);
		} catch (Exception e) {
			fail(e.getMessage());
		}
	}
}