Oracle 11g Express Edition 설치 및 설정
설치에 앞서 왜 Oracle 11g인가?, 최신 버전의 Oracle은 안되는가? 라는 질문이 있을 수 있는데
이 질문에 답은 최신 버전일수록 용량이 크고 메모리를 많이 차지함으로서 프로그램이 무겁다기 때문이다.
https://www.oracle.com/database/technologies/xe-prior-release-downloads.html
이 곳에서 다운 받을 수 있다.
Oracle Database를 설치하면서 가장 주의해야하는 부분은
1. 설치 폴더 한국어가 있을 경우 문제가 발생
2. System, SYS 계정의 패스워드를 지정하게 되는데, 이 패스워드는 매우매우 중요하기 때문에 반드시 기억해둬야함!
3. 설치 중 포트 번호(톰캣이 8080 포트를 사용해서 발생할 수 있음)
비밀번호를 간단하게 oracle11g로 설정
SQL Plus를 사용할 수 있지만 인터페이스가 편하지만은 않다. 따라서 무료 SQL Developer도 설치
https://www.oracle.com/kr/database/sqldeveloper/technologies/download/
SQL Developer의 경우 JDK가 포함된 버전과 그렇지 않은 버전이 있다. 관계는 없는데 환경변수가 잡혀져있으면 JDK가 포함되지 않은 것을 사용해도 됨. sql developer 버전을 20.2를 사용할 예정
sqldeveloper.exe를 실행하면
아니요 누르면 실행됨
실행되면
비밀번호는 위에 Oracle을 설치할 때 패스워드 입력 후 테스트를 누르고 상태 성공인 것을 확인한 후 접속을 눌러줘야함
SYSTEM 계정은 사용하지 않음 따라서 사용할 계정을 만들어줘야함
쿼리에서 다음과 같이 함
※ SYSTEM에 하위 항목에서 다른 사용자로 만들 경우 암호화가 되어 사용할 수 없음
이후 SYSTEM의 연결을 끊고 새 접속
Oracle이 8080포트를 사용 → 변경 9090 포트로 변경
exec dbms_xdb.sethttpport(9090);
톰캣과 충돌이 나지 않음
JDBC 연결 확인
주의할 점은 JDBC Driver, Oracle은 maven repository
https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6/11.2.0.4
JDBC 테스트 코드를 위해서
src/test/java에서 패키지를 만들고 JDBCTests 클래스를 생성
package org.zerock.persistence;
import org.junit.Test;
import lombok.extern.log4j.Log4j;
@Log4j
public class JDBCTests {
@Test
public void testConnection() throws Exception {
Class clz = Class.forName("oracle.jdbc.driver.OracleDriver");
log.info(clz);
}
}
드라이버 로딩에 문제가 없음
여기까지 했으면 DB연결에 문제가 없음
Connection Pool(Hikair CP) 설정(매우 중요)
DataSource 설정
DB와 Connection을 맺고 끊은 작업은 리소스의 소모가 많은 작업
Pooling 기법을 통해 객체를 미리 생성하고 빌려 쓰는 방식으로 이용해서 연결 시간을 단축
Commons DBCP나 HikariCP 등을 활용
라이브러리 추가(pom.xml)
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
DataSource 설정(root-context.xml)
일반적인 DB 세팅과 같음
https://github.com/brettwooldridge/HikariCP 참고
root-context.xml에
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="hikariConnfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:XE"></property>
<property name="username" value="book_ex"></property>
<property name="password" value="book_ex"></property>
</bean>
<bean id="dateSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConnfig" />
</bean>
<context:component-scan base-package="org.zerock.sample"></context:component-scan>
</beans>
※언제 어노테이션으로 주입? 언제 xml 주입? → 소스코드가 없으면 어노테이션을 걸지 못함
DataSource를 만듦으로서 테스트
package org.zerock.persistence;
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.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class DataSourceTests {
@Autowired
private DataSource dataSource;
@Test
public void testConnection() {
try(Connection connection = dataSource.getConnection()){
log.info(connection);
} catch(Exception e) {
e.printStackTrace();
log.error(e.getMessage());
}
}
}
'organize > 스프링' 카테고리의 다른 글
스프링 웹 프로젝트 4 (0) | 2024.12.30 |
---|---|
스프링 웹 프로젝트 3 (0) | 2024.12.29 |
스프링 웹 프로젝트 1 (3) | 2024.12.27 |
웹 시큐리티 (0) | 2024.10.05 |
프레임워크, Spring과 Spring Boot (1) | 2024.10.04 |