105 lines
4.6 KiB
Markdown
105 lines
4.6 KiB
Markdown
# JPA
|
|
|
|
## `application.yaml` 설정
|
|
|
|
```yaml
|
|
spring:
|
|
# 공통 JPA 설정
|
|
jpa:
|
|
hibernate:
|
|
ddl-auto: update # 테이블 자동 생성/업데이트 설정
|
|
show-sql: true # SQL 쿼리 로그 출력
|
|
properties:
|
|
hibernate:
|
|
format_sql: true # SQL 포맷팅 출력
|
|
|
|
# 개발 환경 (H2 데이터베이스)
|
|
---
|
|
spring:
|
|
config:
|
|
activate:
|
|
on-profile: dev
|
|
datasource:
|
|
url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
|
|
driver-class-name: org.h2.Driver
|
|
username: sa
|
|
password:
|
|
h2:
|
|
console:
|
|
enabled: true # H2 콘솔 활성화
|
|
path: /h2-console
|
|
|
|
# 프로덕션 환경 (MariaDB 데이터베이스)
|
|
---
|
|
spring:
|
|
config:
|
|
activate:
|
|
on-profile: prod
|
|
datasource:
|
|
url: jdbc:mariadb://localhost:3306/mydb
|
|
driver-class-name: org.mariadb.jdbc.Driver
|
|
username: root
|
|
password: mypassword
|
|
jpa:
|
|
properties:
|
|
hibernate:
|
|
dialect: org.hibernate.dialect.MariaDBDialect # MariaDB 전용 dialect
|
|
```
|
|
|
|
### 실행 방법
|
|
- `dev` 프로파일: `spring.profiles.active=dev`로 실행 (H2 사용)
|
|
- `prod` 프로파일: `spring.profiles.active=prod`로 실행 (MariaDB 사용)
|
|
|
|
|
|
### 설정 옵션
|
|
|
|
#### 1. 공통 JPA 설정 옵션
|
|
| **옵션** | **설명** | **예시 값** |
|
|
|-----------------------------|-------------------------------------------------------------------------------------------|-----------------------|
|
|
| `spring.jpa.hibernate.ddl-auto` | Hibernate가 데이터베이스 스키마를 생성/업데이트하는 방식 (`create`, `update`, `validate`, `none`) | `update` |
|
|
| `spring.jpa.show-sql` | 실행되는 SQL 쿼리를 콘솔에 출력할지 여부 | `true` |
|
|
| `spring.jpa.properties.hibernate.format_sql` | 출력되는 SQL을 읽기 쉽게 포맷팅할지 여부 | `true` |
|
|
|
|
#### 2. H2 데이터베이스 설정 옵션
|
|
| **옵션** | **설명** | **예시 값** |
|
|
|-----------------------------|-------------------------------------------------------------------------------------------|-----------------------|
|
|
| `spring.datasource.url` | H2 데이터베이스 연결 URL (메모리 모드: `jdbc:h2:mem:testdb`) | `jdbc:h2:mem:testdb` |
|
|
| `spring.datasource.driver-class-name` | H2 JDBC 드라이버 클래스 | `org.h2.Driver` |
|
|
| `spring.datasource.username`| H2 데이터베이스 사용자 이름 (기본값: `sa`) | `sa` |
|
|
| `spring.datasource.password`| H2 데이터베이스 비밀번호 (기본값: 빈 문자열) | `` |
|
|
| `spring.h2.console.enabled` | H2 웹 콘솔 활성화 여부 (브라우저에서 데이터 확인 가능) | `true` |
|
|
| `spring.h2.console.path` | H2 콘솔의 접근 경로 | `/h2-console` |
|
|
|
|
- **참고**: `DB_CLOSE_DELAY=-1`은 메모리 DB가 애플리케이션 종료 시 닫히지 않도록 유지하며, `DB_CLOSE_ON_EXIT=FALSE`는 연결 종료 시 DB를 닫지 않도록 설정합니다.
|
|
|
|
#### 3. MariaDB 데이터베이스 설정 옵션
|
|
| **옵션** | **설명** | **예시 값** |
|
|
|-----------------------------|-------------------------------------------------------------------------------------------|-----------------------|
|
|
| `spring.datasource.url` | MariaDB 데이터베이스 연결 URL (예: `jdbc:mariadb://호스트:포트/데이터베이스명`) | `jdbc:mariadb://localhost:3306/mydb` |
|
|
| `spring.datasource.driver-class-name` | MariaDB JDBC 드라이버 클래스 | `org.mariadb.jdbc.Driver` |
|
|
| `spring.datasource.username`| MariaDB 데이터베이스 사용자 이름 | `root` |
|
|
| `spring.datasource.password`| MariaDB 데이터베이스 비밀번호 | `mypassword` |
|
|
| `spring.jpa.properties.hibernate.dialect` | Hibernate가 사용할 MariaDB 전용 dialect (SQL 최적화) | `org.hibernate.dialect.MariaDBDialect` |
|
|
|
|
|
|
### 추가 설명
|
|
1. **H2 설정**:
|
|
- H2는 인메모리 데이터베이스로, 테스트나 로컬 개발에 적합합니다.
|
|
- H2 콘솔(`/h2-console`)을 통해 브라우저에서 데이터베이스를 확인할 수 있습니다.
|
|
|
|
2. **MariaDB 설정**:
|
|
- MariaDB는 MySQL과 호환되는 오픈소스 RDBMS로, 프로덕션 환경에서 안정적으로 사용됩니다.
|
|
- `dialect` 설정은 Hibernate가 MariaDB에 최적화된 SQL을 생성하도록 돕습니다.
|
|
|
|
3. **의존성 추가**:
|
|
- `pom.xml`에 아래 의존성을 추가해야 합니다:
|
|
```kotlin
|
|
runtimeOnly("com.h2database:h2")
|
|
runtimeOnly("org.mariadb.jdbc:mariadb-java-client")
|
|
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
|
```
|
|
|
|
4. **프로파일 사용**:
|
|
- `application.yaml`에서 `---`로 프로파일을 구분하며, 실행 시 `-Dspring.profiles.active=dev` 또는 `prod`를 지정합니다.
|
|
|