티스토리 뷰
스프링 실습 중 스프링 프로젝트와 JDBC를 연결하는 부분이 나왔다.
우선 오라클 데이터베이스는 오리지널하게는 M1이든 인텔이든 Mac OS에는 설치할 수 없다. (윈도우와 리눅스만 지원)
그래서 인텔 맥의 경우 도커를 이용해 설치하면 되지만...
M1 맥의 경우 아키텍처가 다르기 때문에 이마저도 불가능하다.
따라서 클라우드 서비스를 이용해 데이터베이스를 원격으로 접속하는 방법을 사용해야 한다.
https://shanepark.tistory.com/173
위 포스트를 참고하여 오라클 클라우드 서비스를 이용해 프리 티어 데이터베이스를 이용할 것이다.
다 잘 되다가... 로컬에서 원격 데이터베이스에 접속하는 클라이언트인 SQL Developer에서 접속하는데 실패하는 현상이 벌어지는데...
Test failed: ORA-00604: error occurred at recursive SQL level 1 ORA-01756: quoted string not properly terminated
해당 에러 번호로 구글링해보니 나오는건 대부분 SQL 구문에 따옴표가 빠졌네 등등 전혀 관계없는 것들이었는데...
한줄기 빛이 되어주신 분이 나타났다.
먼저 언어 및 지역 설정으로 들어간다.
참고한 포스트에서는 영어가 있었지만 나는 없어서
새로 추가해준 뒤 첫 번째 순서로 드래그하여 기본으로 설정해줬다.
그 뒤 다시 한국어를 기본으로 설정해준 다음, 오라클 SQL Developer를 다시 실행해주면,
위와 같이 한글로 바뀌면서 테스트 연결도 정상적으로 이루어지는 것을 확인할 수 있다.
이제 JDBC를 통해 데이터베이스에 접근해야 한다.
오라클 클라우드 데이터베이스는 보통의 URL이 아닌 Wallet을 이용해 접속하기 때문에 조금 다르다.
우선 오라클 홈페이지에서 JDBC Driver를 다운로드 해주자.
https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html
클라우드 서비스가 아니라면 자신의 데이터베이스 버전에 알맞은 드라이버를 받으면 되지만, 클라우드 데이터베이스는
19 버전이기 때문에 19 버전 드라이버로 들어가 준다.
여기서 중요한 점은, 우리는 보통의 IP와 Port를 이용한 접근이 아닌
Wallet을 이용한 TNS 접근이기 때문에 ojdbc8.jar 파일과
osdt_core.jar, osdt_cert.jar, oraclepki.jar 파일까지 추가로 받아야 한다!
저 세개를 받아야하는지 몰라서 한시간 반 정도 삽질만 해댔다
왜안되지? url 입력을 잘못했나? 계정 비번 잘못쳤나? 아닌데 인텔리제이 데이터베이스로는 접근되는데
드라이버가 잘못된건가?
총 4개의 jar 파일을 받은 뒤 IntelliJ의 Project Structure로 들어가준다.
[Libraries] -> [+] -> [Java] 순으로 클릭한 뒤 다운받은 4개의 jar 파일들을 지정하고 [Apply] 눌러주자.
그 뒤 [Artifacts] 로 이동하여 라이브러리들을 추가해주자.
테스트 코드를 이용하여 세팅이 정상적으로 되었음을 확인해야만 한다.
아래 테스트 코드는 '구멍가게 코딩단'의 '코드로 배우는 스프링 웹 프로젝트' 책을 참고하였다.
package com.bamboo.persistence;
import lombok.extern.log4j.Log4j;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import static org.junit.Assert.fail;
@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:@여기에디비이름?TNS_ADMIN=여기에지갑경로",
"계정이름",
"계정비밀번호"
)) {
log.info(con);
} catch (Exception e) {
fail(e.getMessage());
}
}
}
먼저 앞서 받은 지갑 zip 파일을 압축 해제해보면 tnsnames.ora 파일이 있다.
열어보면, [디비이름_high] 이런식으로 되어 있는 것이 있다. 저걸 그대로 위의 url의 [여기에디비이름] 자리에 넣어주자.
[여기에지갑경로]는, 압축 파일을 해제한 디렉토리의 경로를 그대로 붙여넣어 주자.
이제 테스트 코드를 실행해서 정상적으로 라이브러리가 추가되었고 연결이 잘 되는지 확인해 보자.
테스트 코드가 잘 작동하여 전반적인 세팅과 연결이 잘 이루어졌음을 확인할 수 있다.
'개발 > 스프링 일기' 카테고리의 다른 글
[Spring] DTO, VO, Entity (1) | 2022.04.15 |
---|---|
[03] Oracle DB 실행계획, 인덱스, ROWNUM, Pagination (1) | 2022.01.16 |
[03] 스프링 MVC의 구성 (2) | 2021.11.30 |
[01] IntelliJ에서 Spring 프로젝트 생성하기 (MacOS) (4) | 2021.11.23 |
[00] Spring Framework 시작 (1) | 2021.11.23 |
- Total
- Today
- Yesterday
- Java
- 경기교통비지원
- 실행 계획
- 경기버스
- IntelliJ
- DTO
- 강남면허시험장
- 코드로 배우는 스프링 웹 프로젝트
- Canny Edge Detector
- 경기지역화폐
- Non Max Suppression
- m1 mac
- 오라클 클라우드
- JVM 메모리 구조
- 객체지향
- runtime data area
- hint
- 싱글톤
- jvm
- 1종대형
- M1 맥
- pagination
- 경기도 청소년 교통비 지원
- Thresholding
- 인텔리제이
- 오라클 데이터베이스
- 오라클 JDBC
- 컴퓨터비젼
- spring
- Edge Detector
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |