데이터베이스 연동
스프링부트 애플리케이션을 연동하여 프로젝트를 생성하는 것을 알아보겠습니다.
프로젝트 생성
- groupId(그룹) : com.springboot
- name(이름), artifactId(아티팩트) : jpa
- Developer Tools : Lombok, Spring Configuration Processor
- Web : Spring Web
- SQL : Spring Data JPA, MariaDB Server
추가 내용
Swagger 의존성
- pom.xml(Maven)에 추가
소스코드
- config/SwaggerConfiguration.java
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.springboot.jpa"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot Open API Test with Swagger")
.description("설명 부분")
.version("1.0.0")
.build();
}
}
application.properties 작성
- Spring Data JPA 의존성을 추가하면 별도의 설정이 필요하다
- 애플리케이션을 정상적으로 실행될 수 있게 연동할 데이터베이스 정보를 application.properties에 작성한다.
- 해당 설정 없이는 스프링 부트 애플리케이션이 실행되지 않는다.
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=1234
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.datasource 설정
- spring.datasource.driver-class-name : 연동하려는 데이터베이스의 드라이버를 정의한다.
- spring.datasource.url : 사용하려는 DB인 mariadb의 경로임을 명시하고, 경로와 데이터베이스명을 입력한다.
- username, password : 데이터베이스 설치 시에, 설정한 계정 정보를 기입한다.
spring.jpa.hibernate.ddl-auto 설정
- create : 애플리케이션이 가동되고 SessionFactory가 실행될 때 기존 테이블을 지우고 새로 생성한다.
- create-drop : create와 동일한 기능을 수행하나 애플리케이션을 종료하는 시점에 테이블을 지운다.
- update : SessionFactory가 실행될 때, 객체를 검사해서 변경된 스키마를 갱신한다. 기존에 저장된 데이터는 유지한다.
- validate : update처럼 객체를 검사하지만 스키마는 건드리지 않는다. 검사 과정에서 데이터베이스의 테이블 정보와 객체 정보가 다르면 에러를 발생시킨다.
- none : ddl-auto 기능을 사용하지 않는다.
✔ 운영 환경에서는 대체로 validate / none 을 사용한다.
✔ 개발 환경에서는 create / update 를 사용하는 편이다.
spring.jpa.show-sql 설정
- 로그에 하이버네이트가 생성된 쿼리문을 출력하는 옶션이다.
- 아무 설정이 없으면 저장에 용이한 형태로 출력되기 때문에 사람이 보기에는 불편하게 한 줄로 출력이 된다.
spring.jpa.properties.hibernate.format.sql 설정
- 출력값을 한 눈에 확인하기 좋게 포매팅(formatting)을 할 수 있다.
반응형
'Book > 스프링부트 핵심가이드' 카테고리의 다른 글
엔티티(Entity) 설계 및 클래스 구성 (0) | 2023.11.02 |
---|---|
Spring Data JPA와 Entity의 설명 (1) | 2023.11.01 |
ORM과 JPA의 개념 이해 (0) | 2023.11.01 |
댓글