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 ) : 엔티티에서 일련번호 생성할 때 애너테이션 추가
'백엔드 > Spring Boot' 카테고리의 다른 글
7. 블로그 화면 구성하기 (5) - 수정 / 생성 기능 추가 (0) | 2023.08.10 |
---|---|
7. 블로그 화면 구성하기 (4) - 삭제 기능 추가 (0) | 2023.08.10 |
7. 블로그 화면 구성하기 (3) - 블로그 글 구현하기 (0) | 2023.08.08 |
외부 파일 import 방법 (0) | 2023.08.08 |
7. 블로그 화면 구성하기 (2) - 블로그 글 목록 뷰 구현하기 (0) | 2023.08.04 |