2019. 9. 28. 19:37ㆍProject B (SPMS)/Project B 파트1
오라클 유저 study2 생성 및 DBA권한 부여
SQL PLUS 관리자로 접속 후
sqlplus / as sysdba
오라클 유저 생성
create user study2 identified by study2
default tablespace users
temporary tablespace temp;
유저에 DBA 권한 부여
GRANT CONNECT, DBA TO STUDY2
오라클 study2 유저로 접속 테스트 확인
오라클 자바 연결 드라이버 (ojdbc 8) 라이브러리 추가 1
프로젝트 속성(Properties) 에서 Java Build Path - Libraries - Add External JARs
파일 : SQL Developer의 sqldeveloper\jdbc\lib\ojdbc8.jar 의 파일을 추가
오라클 자바 연결 드라이버 (ojdbc 8) 라이브러리 추가 2
프로젝트 속성(Properties) 에서 Deployment Assembly - Add - Java - Build Path Entries
파일 : SQL Developer의 sqldeveloper\jdbc\lib\ojdbc8.jar 의 파일을 추가
오라클 자바 연결 드라이버 (ojdbc 8) 라이브러리 추가 3
파일 복사 : SQL Developer의 sqldeveloper\jdbc\lib\ojdbc8.jar
파일 붙여넣기 : webapp/WEB-INF/lib/ojdbc8.jar
(*) lib 폴더는 생성할 것.
JDBC 테스트 코드 작성
src/test/java
com.spms.persistence
JDBCTests.java
package com.spms.persistence;
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 {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testConnection() {
try (Connection con = DriverManager.getConnection("jdbc:oracle:thin:@호스트주소:1521:SID", "아이디",
"패스워드")) {
log.info(con);
} catch (Exception e) {
fail(e.getMessage());
}
}
}
JDBC 테스트 코드 실행
Run As - JUnit Test
JDBC 테스트 코드 실행 테스트 결과
INFO : com.spms.persistence.JDBCTests - oracle.jdbc.driver.T4CConnection@8bd1b6a
커넥션 풀 설정
src/main/java
com.spms.config
RootConfig.java
package com.spms.config;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
public class RootConfig {
@Bean
public DataSource dataSource() {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver");
hikariConfig.setJdbcUrl("jdbc:oracle:thin:@본인의 호스트주소:본인의 포트번호:본인의 환경SID");
hikariConfig.setUsername("아이디");
hikariConfig.setPassword("패스워드");
HikariDataSource dataSource = new HikariDataSource(hikariConfig);
return dataSource;
}
}
@Bean : XML의 <Bean> 과 같으며, @Bean이 선언된 메서드의 실행결과로 반환된 객체는 스프링 객체(Bean)로 등록된다.
Bean을 정의한 후에는 항상 테스트를 작성하는 습관을 가져야 한다.
커넥션 풀 테스트 작성
src/test/java
com.spms.persistence
DataSourceTests.java
package com.spms.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 com.spms.config.RootConfig;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes= {RootConfig.class})
@Log4j
public class DataSourceTests {
@Setter(onMethod_ = { @Autowired })
private DataSource dataSource;
@Test
public void testConnection() {
try (Connection con = dataSource.getConnection()){
log.info(con);
}catch(Exception e) {
fail(e.getMessage());
}
}
}
스프링에 빈(Bean)으로 등록된 데이터소스(DataSource)를 이용해서 연결(Connection)을 제대로 처리할 수 있는지 확인
커넥션 풀 JUnit 테스트 결과
(*) JUnit 테스트 방법은 이제부터 생략.
INFO : org.springframework.test.context.support.DefaultTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
INFO : org.springframework.test.context.support.DefaultTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@7d9d1a19, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@39c0f4a, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@1794d431, org.springframework.test.context.support.DirtiesContextTestExecutionListener@42e26948, org.springframework.test.context.transaction.TransactionalTestExecutionListener@57baeedf, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@343f4d3d]
INFO : org.springframework.context.support.GenericApplicationContext - Refreshing org.springframework.context.support.GenericApplicationContext@5f9d02cb: startup date [Sat Sep 28 19:59:49 JST 2019]; root of context hierarchy
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
WARN : com.zaxxer.hikari.util.DriverDataSource - Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation.
INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
INFO : com.spms.persistence.DataSourceTests - HikariProxyConnection@1052317717 wrapping oracle.jdbc.driver.T4CConnection@60015ef5
INFO : org.springframework.context.support.GenericApplicationContext - Closing org.springframework.context.support.GenericApplicationContext@5f9d02cb: startup date [Sat Sep 28 19:59:49 JST 2019]; root of context hierarchy
INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.
유닛 테스트를 해보면, 내부적으로 HikariCP가 시작되고, 종료되는 로그를 확인할 수 있다.
'Project B (SPMS) > Project B 파트1' 카테고리의 다른 글
[B -2-6] 스프링과의 연동 처리 (0) | 2019.09.28 |
---|---|
[B -2-5] 마이바티스와 스프링 연동 (0) | 2019.09.28 |
[B -2-3] Java 기반 스프링 환경 설정 (0) | 2019.09.27 |
[B -2-2] 롬복 라이브러리 설치 (0) | 2019.09.27 |
[B -2-1] 스프링 프로젝트 생성 (0) | 2019.09.27 |