백엔드/Spring Boot

Oracle Database 연결 시 환경설정 및 확인 방법

두개의 문 2023. 8. 9. 10:43

1. build.gradle에서 JDBC 드라이버를 Oracle로 변경 후, 반드시 Refresh Gradle 실행

   ▪︎ 사용할 데이터베이스 JDBC 드라이버만 주석 풀고 사용 

 

   ▪︎ 전체 build.gradle 코드 

     - 무슨 기능을 하는지 알아야 함 

     - Snippets 등록해놓음 ( SpringBoot 폴더에 '최종 build.gradle 정리' 이름으로 등록 )

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.2'
    id 'io.spring.dependency-management' version '1.1.2'
}

group 'org.choongang'
version '1.0'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
	// * Spring MVC 개발 라이브러리 
	// MVC 환경 개발에 필요한 필수 라이브러리 
	implementation 'org.springframework.boot:spring-boot-starter-web'
	// 타임리프를 뷰 템플릿으로 사용 시 필요 
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	// 타임리프 뷰 템플릿 레이아웃 기능 적용 
	implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'

	// * 데이터베이스를 다루는 기술 ( JPA / MyBatis / JDBC TEMPLATE )
	//   -> 이 중 하나만 사용 ( 나머지 주석처리할 것 ) 
	// 순수 JDBC 기술로 개발 시 필요 
	//implementation 'org.springframework.boot:spring-boot-starter-jdbc'
	// JPA 방식 기술로 개발 시 필요 
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	// JDBC Template 방식 기술로 개발할 때 필요 
	//implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'

	// 한국에서 가장 많이 사용하고 있는 데이터베이스 기술 
	//implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.1.2'
	
	// * 실행 시 필요한 데이터베이스 JDBC 드라이버 
	//   -> 사용할 드라이버만 주석 풀기 
	//runtimeOnly 'com.h2database:h2'
	//runtimeOnly 'com.mysql:mysql-connector-j'
	runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
	//runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
	
	// * 개발할 때 소스 자동 생성 실행 시 필요한 라이브러리 
	annotationProcessor 'org.projectlombok:lombok'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	
	// * 테스트 라이브러리 
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	//testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.1.2'
}


test {
    useJUnitPlatform()
}

 

 

 

2. application.yml에 Oracle DB 연결 설정 

 

오라클용 초기값 입력 추가

▪︎ 들여쓰기 주의 ( tab 쓰지 말것! 두 칸 space_bar 이용! ) 

▪︎ 콜론 뒤 공백 있으면 에러날 가능성 있음 

▪︎ 서로 다른 구성끼리는 한 줄 띄어서 구분시키기 

▪︎ 주석 : # 이용 

 

▪︎ application.yml 전체 코드 

     - Snippets 등록해놓음 ( SpringBoot 폴더에 '최종 application.yml 정리' 이름으로 등록 )

server:
  port: 80
  
spring:
  # 오라클 / 마리아디비에서 프로젝트 시작 시, 초기 데이터 입력 가능 
  # data.sql에 insert DML문을 넣어놓으면 됨 
  sql:
    init:
      mode: always
  
  # JPA settings     
  jpa:
    # JPA의 OMR에서 사용하는 SQL구문을 보여주세요. 
    show-sql: true
    properties:
      hibernate:
        # 위에서 만들어진 SQL를 깔끔하게 보여주세요. 
        format-sql: true
    # data.sql을 실행하세요. (실행이 잘 안되는 경우가 종종 있음)
    # 그래서 sql:init:mode:always 속성 사용     
    defer-datasource-initialization: true
    
    # JPA로 데이터베이스를 다룰때 표준 SQL이 아닌 각 데이터베이스 
    # 고유 SQL 기능( = 여기서 방언(Dialect)라고 부름 )
    # Oracle 10g : Oracle10Dialect
    # Oracle 11g : Oracle10Dialect
    # 그 이후 버전 : Oracle12cDialect
    database-platform: org.hibernate.dialect.Oracle12cDialect
    
    # hibernate.ddl-auto:
    #   create(데이터베이스에 테이블을 매번 새로 만들어라)
    #   update(테이블이 없으면 새로 만들고 있으면 업데이트만 수정)
    #   create-drop : create 옵션과 동일, 단 앱을 중지하면 테이블 자동 삭제 
    #   validate : 테이블을 만드는 것이 아니고, 엔티티와 테이블의 구조가 같은지만 검사 
    #   none : ddl-auto 속성을 지정하지 않으면 기본값에 해당. 이 경우 테이블을 만들어
    #          개발자가 직접 구조를 분석하는 경우 
    #   처음 개발할 때는 create 또는 create-drop 사용
    #   테이블 구조 변경될 일 없으면 update 사용 
    #   반드시 validate 이하 사용 
    hibernate:
      ddl-auto: create
  
  # 데이터베이스와 연결하는 설정이므로, 데이터베이스 종류마다 다름 
  # 단 설정은 기본 4가지면 대부분 적용됨 
  # : driver-class-name / url / username / password     
  
  # OracleDB connection settings
  datasource:
    driver-class-name: oracle.jdbc.OracleDriver 
    url: jdbc:oracle:thin:@//localhost:1521/xe
    username: webuser
    password: webuser
    
  #datasource:
  #  url: jdbc:h2:mem:testdb  
   
  # 데이터베이스 컨넥션 풀은 모든 데이터베이스에서 공통으로 사용할 수 있으므로
  # 아래 설정으로 하면 충분함   
  # HikariCP settings
    hikari:
      minimumIdle: 5
      maximumPoolSize: 20 # 최대 연결할 수 있는 클라이언트 수 
      idleTimeout: 30000
      maxLifetime: 2000000
      connectionTimeout: 30000
      poolName: HikariPoolBBS  
    
  
  #h2:
  #  console:
  #    enabled: true

 

 

 

3. Oracle DB이므로, data.sql도 Oracle 문법에 맞게 작성 

▪︎ data.sql 

INSERT INTO ARTICLE
	(id, title, content, created_at, updated_at)
    VALUES
    (article_seq.nextval, '제목1', '내용1', SYSDATE, SYSDATE);

 

 

 

4. webuser 계정의 Oracle에서 오른쪽 클릭 - Edit Connection 

    : Connection settings와 위의 application.yml에서 설정한 부분이 일치하는지 확인 후, Test Connection으로 연결 시도 

 

 

 

5. 연결에 성공한 후, 제대로 연결되었는지 확인 

▪︎ webuser 계정에 해당 테이블이 생성되었는지 확인 

     ( 현재 작업 중인 테이블명 : ARTICLE )

 

 

 

▪︎ Oracle DB webuser 계정의 ARTICLE 테이블에서 데이터 확인 가능 

 

 

 


※ Entity ( Article.java ) : 엔티티에서 일련번호 생성할 때 애너테이션 추가