스프링과 Oracle Database 연동

최대한·2021년 10월 10일
0
post-thumbnail

책 「코드로 배우는 스프링 웹 프로젝트 -구멍가게 코딩단 지음」으로 스프링 공부를 하고 있습니다.
책의 내용대로 잘 따라하고 있다고 생각하는데, 생각치도 못한 부분에서 오류가 너무 많이 발생하고 매번 진도나가는데 어려움이 있어서 보기 쉽게 정리하고자 합니다.

1. 오라클 설치

오라클 홈페이지 메뉴 구조가 꾸준히 바뀌기 때문에 사진으로 항목을 찾기보다는 검색해서 다운 받는게 더 편할 수 있습니다.

구글에 11g Express Edition download를 검색해서 다운로드를 받아줍니다.

다운로드가 완료되면 원하는 경로를 지정해서 압축을 해제하고, setup 파일을 통해서 설치해줍니다.

설치 과정은, 라이선스에 동의하고 설치 대상 폴더를 지정해줍니다.

설치하는 중간에서 System, SYS 계정의 패스워드를 지정하게 되는데, 이때 패스워드는 반드시 기억해줘야 합니다! (System 계정의 패스워드는 다른 사용자 계정을 만들 때도 사용됨.)

2. SQL Developer 설치

구글에 'sql developer download'를 검색하면 맨 위에 Oracle SQL Developer Downloads 링크가 나옵니다.
링크를 클릭하면 아래와 같은 창이 뜨는데, 자신의 컴퓨터에 맞게 (windows, mac, linux) 선택해서 다운받으시면 됩니다.
저는 Windows 64-bit with JDK 8 included를 선택!

다운로드 후 마찬가지로 원하는 경로를 지정해서 압축을 해제합니다.

압축해제 후 sqldeveloper이 생성되고, 클릭해보면


짜잔! 뭐가 참 많죠?
맽 밑에 sqldeveloper.exe를 실행시켜 줍니다.
실행한 후에는 System 계정으로 설치 시 입력했던 패스워드를 통해서 접속합니다!

텅 ... ~
사실 저는 책보고 연동을 해놨었는데, 설명을 위해서 눈물을 머금고 지웠습니다.
처음부터 같이 해보시죠!

초록색 + 를 클릭해줍니다!

책에서 이렇게 입력하랍니다! 그래서 똑같이 했습니다.
밑에 테스트(T)를 클릭하면 좌측 아래 " 상태: 성공 "이 보이시죠?
이러면 별 문제없이 잘 생성된다고 생각하시면 됩니다!
밑에 "저장"을 눌러서 다음 단계를 진행해줍니다!
저장을 누른 순간 localhost라는 계정이 생겼죠? 여러분들도 보이시죠?

계정 생성이나 계정 접속 연결을 하다보면 오류가 가끔 뜨는데, 그 부분은 따로 모아서 포스팅 하도록 하겠습니다! (저도 오류 때문에 애를 많이 먹었는데 지금은 안뜨네요 하하)

2-1. 예제에서 사용하는 계정 생성

SQL Developer에 System 계정으로 접속 성공한 후에 예제에서 사용할 계정을 만들어 줍니다!
사용자를 생성하기 위해서는 화면에 보이는 텍스트 편집기(워크시트) 를 이용합니다.

(사용자 이름: book_ex, 패스워드: book_ex로 설정한 것, 명령어는 대소문자를 신경쓰지 않지만, 계정과 비밀번호는 대소문자를 신경써주셔야 합니다!)

위와 같이 입력한 후, 좌측 상단 초록색 세모 (실행) 를 누릅니다.
정상적으로 사용자가 생성되면 'User BOOK_EX이 (가) 생성되었습니다.' 라는 결과를 확인할 수 있습니다.

GRANT로 사용자에게 접속권한과 DBA 권한을 부여합니다!

올바르게 연결 정보가 되었는지 확인하기 위해 새롭게 연결을 시도해서 테스트 버튼을 눌러봅시다!


사용자 이름: book_ex, 비밀번호: book_ex를 입력해줍니다.
"테스트" -> 성공!

2-2. 8080 포트 변경

오라클 11g의 경우 기본적으로 8080 포트를 이용해서 웹 환경으로도 데이터베이스를 접근할 수 있습니다. 문제는 웹 개발 시 많이 사용하는 Tomcat의 기본 포트가 8080이므로 오라클과 겹치게되면 문제가 발생하게 됩니다. 따라서 오라클의 포트를 변경시켜주는 것이 좋습니다!

저 같은 경우는 위에서 생성한 localhost 접속을 삭제하고 새로 만들었습니다.
사용자 이름: sys, 비밀번호: 초기 등록한 오라클 패스워드
롤: SYSDBA로 변경
테스트: 성공! -> 저장 후 접속해줍니다.

이후 워크시트에
select dbms_xdb.gethttpport() from dual;
을 입력해서 현재 사용하는 포트 번호가 몇 번인지 확인합니다.
저는 처음에 8080 포트였지만, 제가 임의로 9090으로 변경해서 위와 같이 9090으로 표기되는 것입니다! 여러분들도 아마 8080으로 뜨시겠죠?

  • 결과가 8080으로 출력되는 경우
    exec dbms_xdb.sethttpport(9090); 을 이용해서 포트를 변경해줍니다!
    위 명령어 실행 후 다시 select dbms_xdb.gethttpport() from dual;를 실행하면 9090이라고 나오실 겁니다.

3. 프로젝트의 JDBC 연결

본격적인 예제를 구성하기 위해서 반드시 jdbc 연결에 문제가 없는지 확인해야 합니다!

SQL Developer를 설치했다면 설치 경로에 jdbc/lib 폴더에 JDK 8버전용 ojdbc.jar파일이 존재하므로, 별도로 설치하지 않아도 됩니다.

없다면 수동으로 설치해야겠지요? 친절히 링크 드리겠습니다.

다운로드할 때 반드시 현재 사용하는 데이터베이스 버전에 맞는 드라이버를 사용해야 합니다. 엄청난 오류를 만들어내는 원인이기도 합니다.

3-1. ojdbc8.jar 파일 복사

제가 이 부분에서 애를 참 많이 먹었습니다.

ojdbc8.jar 파일을 위처럼 Project Structure - Project Settings - Libraries에만 추가를 했었는데, 아래에서 나올 테스트 코드에서 계속 오류가 났습니다.
몇 일이 걸려서 오류를 찾았는데, 우리가 사용하는 jre와 jdk 파일 내에 ojdbc8.jar 파일을 복사해서 붙여넣어 줬더니 해결됐습니다!


우선 제가 사용하는 jdk1.8.0_241 파일에 가서
jre - lib - ext 파일 밑에 ojdbc8.jar을 복사해줬고,

jre1.8.0_241 - lib - ext 파일 밑에도 동일한 작업을 수행했습니다!

여러분들도 혹시 밑에 나올 3-2의 테스트 코드에 에러가 뜬다면 저와 같은 작업을 해보시기 추천드립니다!

3-2 JDBC 테스트 코드

우선 src/test/java 밑에 org.zerock.persistence 라는 패키지를 생성하고, 그 밑에 JDBCTests 클래스를 생성합니다. 클래스에 작성할 내용은 다음과 같습니다.

이후 실행을 하고 정상적으로 동작한다면, 정상적으로 데이터베이스가 연결된 Connection 객체가 출력됩니다.

반드시 테스트 코드를 만들어서 문제가 있나 확인해야 이후 작업을 수행할 수 있습니다!

profile
한국 사람입니다.

0개의 댓글