2025-04-08T19:56:24
This commit is contained in:
104
docs/32_jpa 설정.md
Normal file
104
docs/32_jpa 설정.md
Normal file
@@ -0,0 +1,104 @@
|
||||
# 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`를 지정합니다.
|
||||
|
||||
Reference in New Issue
Block a user