반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ intelliJ IDEA 2021.3.1 (Community Edition)

    ˙ spring initializer (Gradle)

        - 참고) https://languagestory.tistory.com/136

 

SpringBoot 프로젝트 생성 및 MySQL 연동 설정

1. 시험환경 ˙ 윈도우 10 ˙ MySQL 8.0 Win x64 ˙ intelliJ IDEA 2021.3.1 (Community Edition) ˙ spring initializer (Gradle) 2. 목적 ˙ spring initializer(https://start.spring.io)를 통해서 Spring Boot..

languagestory.tistory.com

 

2. 목적

    ˙ spring.jpa.show-sql와 spring.jpa.properties.hibernate.format_sql 설정으로 SQL 로그를 출력한다.

    ˙ @Entity 컴포넌트 및 spring.jpa.hibernate.ddl-auto 설정에 의해 "Table 자동" 생성한다.

    ˙ data.sql 및 spring.datasource.initialization-mode와 spring.jpa.defer-datasource-initialization 설정에

         의해  data를 자동 import한다.

 

3. 적용

    ① application.properties 설정값

1
2
3
4
5
6
7
8
9
10
11
# MySQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sample
spring.datasource.username=root
spring.datasource.password=1q2w3e
 
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.initialization-mode=always
spring.jpa.defer-datasource-initialization=true
cs

 

    ② SQL 쿼리 로그 출력 설정

        - spring.jpa.show-sql=true : Runtime 콘솔 화면에 SQL 쿼리문을 나타낸다.
        - spring.jpa.properties.hibernate.format_sql=true : Runtime 콘솔 화면에 나타나는 SQL 쿼리문을 pretty하게 나타낸다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2022-02-23 17:50:03.079  INFO 17388 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-02-23 17:50:03.346  INFO 17388 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2022-02-23 17:50:03.377  INFO 17388 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
Hibernate: 
    
    drop table if exists world
Hibernate: 
    
    create table world (
       id bigint not null auto_increment,
        lang varchar(255),
        money varchar(255),
        nation varchar(255),
        population integer not null,
        primary key (id)
    ) engine=InnoDB
2022-02-23 17:50:04.051  INFO 17388 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2022-02-23 17:50:04.051  INFO 17388 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
cs

 

    ③ @Entity 컴포넌트를 스캔하여, 서버 실행 시 Table "자동 생성" 및 서버 종료 시 Table "자동 삭제"한다.

        - spring.jpa.hibernate.ddl-auto=create-drop

        - 설정값에 따라 생성, 수정, 삭제 등이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.database.connection.entity;
 
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
 
@Getter
@Setter
@ToString
@Entity
public class World {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
 
    private String nation;
    private String lang;
    private String money;
    private int population;
}
 
cs

 

    ④ "src/main/resources/data.sql"에 Import 데이터를 작성하면, 서버 실행 시 자동으로 실행된다.

        - spring.datasource.initialization-mode=always
        - spring.jpa.defer-datasource-initialization=true

1
2
3
4
5
6
insert into `world` (`nation``lang``money``population`)
values
('Republic of America''English''dollar'500),
('England of United Kingdom''English''found'50),
('Spain''Spanish''euro'40),
('Thailand''Thailian''bat'200);
cs

 

4. 결과

    ˙ 서버 실행 시, Table이 자동생성되고 데이터가 Import된 것을 확인할 수 있다.

 

    ˙ 서버 실행 시, 자동 생성된 Table이 삭제된 것을 확인할 수 있다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형

+ Recent posts