새싹개발자 2020. 9. 13. 18:45

오라클 설치 

1. 오라클 데이터베이스 11g Express Edition 버전 다운로드

2. SQL Developer 20.2 버전 다운로드

 

SQL Developer에 접속하기

- 계정 이름 : System

- 호스트 이름 : localhost

- 포트 : 1521

- SID : xe

 

예제에 사용하는 계정 생성

: System 계정으로 접속 성공 후, 예제에서 사용할 계정 만듦

-> GRANT로 사용자에게 접속(CONNECTION) 권한과 DBA 권한 부여

 

※ 8080 포트 변경

오라클 11g 경우 기본적으로 8080 포트 이용해서 웹 환경으로도 데이터베이스 접근 가능

하지만, 웹 개발 시 많이 사용하는 Tomcat의 기본 포트가 8080이기 때문에 동시에 오라클과 Tomcat이 8080 포트를 사용하는 것이 문제가 된다. 따라서 오라클의 포트를 변경해 주는 것이 좋다.

-> 나의 경우는 8081 포트를 사용하기 때문에 따로 변경하지 않았다.

 

 

프로젝트의 JDBC 연결

- SQL Developer 설치 경로에 jdbc/lib 폴더에 JDK8버전용 ojdbc8.jar 파일 존재

- 예제 프로젝트를 선택한 후, 'Build Path' 이용해서 ojdbc8.jar 파일을 경로에 추가

- 나중에 war 파일로 만들어질 때에도 jar 파일이 포함될 수 있도록 'Web Deployment Assembly' 항목에도 jar파일 추가, 이 항목에서는 Add 버튼을 눌러 'Java Build Path' 선택

 

 

JDBC 테스트 코드

JDBC 드라이버가 정상적으로 추가되었고, 데이터베이스의 연결이 가능한 것을 확인해보자.

테스트 코드가 있는 폴더에 org.zerock.persistence.JDBCTests.java 클래스 추가

 

테스트 코드는 아래와 같다.

-> 테스트 코드는 Java와 JDBC 드라이버만으로 구현해서 먼저 테스트해야 한다. 데이터베이스 연결이 가능하다면 정상적으로 연결된 Connection 개체가 출력된다.

 

커넥션 풀 설정

일반적으로 여러 명의 사용자를 동시에 처리해야 하는 웹 애플리케이션의 경우 데이터베이스 연결을 이용할 때는 '커넥션 풀(Connection Pool)'을 이용

더보기

커넥션 풀(Connection Pool) : 데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool) 속에 저장해 두고 있다가 필요할 때 커넥션을 풀에서 쓰고 다시 풀에 반환하는 기법

웹프로그램에서는 데이터베이스의 환경설정과 연결 관리 등을 따로 XML 파일이나 속성 파일을 사용해서 관리하고, 이렇게 설정된 정보를 이름을 사용하여 획득하는 방법을 사용.

- 웹 컨테이너가 실행되면서 커넥션 객체를 미리 풀에 생성

- DB와 연결된 커넥션을 미리 생성해서 풀 속에 저장해 두고 있다가 필요할 때에 가져다 쓰고 반환

- 미리 생성해두기 때문에 데이터베이스에 부하를 줄이고 유동적으로 연결을 관리할 수 있음

 

출처 : https://devbox.tistory.com/entry/JSP-%EC%BB%A4%EB%84%A5%EC%85%98-%ED%92%80-1

Java에서는 DataSource라는 인터페이스를 통해서 커넥션 풀을 사용

-> 매번 데이터베이스와 연결하는 방식이 아닌, 미리 연결을 맺어주고 반환하는 구조를 이용하여 성능 향상 

 

커넥션 풀은 여러 종류가 있고, spring-jdbc 라이브러리를 이용하는 방식도 있지만, 최근 유행하는 HikariCP를 이용해보겠다. HikariCP는 스프링 부트 2.0에서도 사용될 만큼 빠르게 퍼지고 있다.

 

라이브러리 추가와 Data Source 설정

 

pom.xml 파일을 수정해서 HikariCP를 추가한다.

 

 

root-context.xml 파일의 설정은 직접 <bean> 태그를 정의해서 작성한다.

* root-context.xml : 스프링이 로딩되면서 읽어 들이는 문서

- 주로 이미 만들어진 클래스들을 이용해서 스프링의 빈(Bean)으로 등록할 때 사용된다.

- 일반적인 상황이라면 프로젝트에 직접 작성하는 클래스들은 어노테이션을 이용하는 경우가 많고, 외부 jar 파일 등으로 사용하는 클래스들<bean>태그를 이용해서 작성하는 경우가 대부분이다.

 

<bean> 태그 내에는 <property>를 이용해서 여러 속성에 대해서 설정할 수 있는데, 예제는 최소한의 설정만을 이용해서 아래의 같이 HikariCP에 대한 설정을 한다.

 

동작원리 

스프링이 시작되면 root-context.xml을 읽어서 아래와 같은 형태로 id가 dataSource인 객체가 처리된다.

테스트를 해보자.

'src/test/java'에 DataSourceTests 클래스를 작성한다.

테스트 코드는 아래와 같이 작성한다.

-> 스프링에 빈(Bean)으로 등록된 DataSource를 이용해서 Connection을 제대로 처리할 수 있는지를 확인해 보는 용도이다. testConnection()을 실행해 보면 내부적으로 HikariCP가 시작되고, 종료되는 로그를 확인할 수 있다.

 

 

 

 

 

 

-> 실행 결과는 서버의 로그를 확인하는 것으로 설정에 문제가 없는지를 확인하는 수준

브라우저에서 확인하는 것은 여러 설정을 추가해 준 후에 가능.

 

 

 

 

출처 : 코드로 배우는 스프링 웹 프로젝트(개정판) - 구멍가게 코딩단