개인프로젝트를 진행하면서 기존에 Oracle 또는 MySQL/MariaDB 반 사용하다가 이번에 PostgreSQL 를 사용해보고자 SpringBoot Data JPA + PostgreSQL 를 포스팅하겠습니다.
PostgreSQL 은 AWS 에서 프리티어로 생성
1. build.gradle
SpringData JPA , PostgreSQL Dependency 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.postgresql:postgresql:42.7.3'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.kafka:spring-kafka-test'
}
2. application.properties
JPA 설정과, Database 설정을 추가한다.
ddl-auto 옵션
- update: entity model 에 맞춰 schema 를 update 한다. 수정이 자주 발생하는 개발환경에서 테스트할때 유용하다.
- create: 기존의 schema 를 drop 하고 새로운 schema를 생성한다. (여러 개발자가 작업할때는 미사용 추천)
- validate: 데이터베이스를 변경하지 않고 entity 모델과 기존 schema 가 일치하는지 체크한다. (프로덕션 추천)
- create-drop: application 시작시 schema 를 생성하고 application 종료시 schema를 삭제한다.
위의 옵션 중 상황에 맞춰서 추가한다.
spring.application.name=data_producer
# JPA
spring.jpa.database=postgresql
spring.jpa.hibernate.ddl-auto=create
# Database
spring.datasource.hikari.maximum-pool-size=4
spring.datasource.url= jdbc:postgresql://<<db url>>:<<port>>/<<database>>
spring.datasource.username= <<db username>>
spring.datasource.password= <<db password>>
spring.datasource.driver-class-name=org.postgresql.Driver
3. entity 추가
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;
@Entity
@Getter
@Setter
public class SampleEntity {
@Id
private Long id;
private String name;
}
위의 설정을 완료 후 application run 하면 아래처럼 테이블이 자동으로 생성된것을 확인할 수 있다.
'개발 > 스프링 프레임워크' 카테고리의 다른 글
[SpringBoot3 + Log4j2] Routing 활용하여 요청별 로그파일 생성 (0) | 2023.07.26 |
---|---|
[Spring Boot] JPA, AuditorAware 사용하여 사용자정보 자동 입력 (1) | 2023.07.12 |
[Spring Boot] AutoConfigureMockMvc 사용하여 Controller 테스트 (0) | 2023.07.04 |
[Spring Boot] H2 + JPA 세팅 (1) | 2022.07.21 |
[Spring Secutiry] Invalid CSRF token found for... (0) | 2020.09.15 |