1. 시험환경
˙ 윈도우 10
˙ intelliJ IDEA 2021.3.1 (Community Edition)
˙ spring initializer (Gradle)
- 참고) https://languagestory.tistory.com/136
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이 삭제된 것을 확인할 수 있다.
※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※
'스프링 프레임워크' 카테고리의 다른 글
[STS] Installed JRE 설정 변경 (JDK JAVA 설정) (0) | 2022.02.25 |
---|---|
STS(Spring Tool Suite) 최신 버전 설치 (0) | 2022.02.25 |
[IntelliJ 설정] Execution failed for task : java.exe finished with non-zero exit value 1 (0) | 2022.02.23 |
SpringBoot 프로젝트 생성 및 MySQL 연동 설정 (0) | 2022.02.23 |
스프링 web.xml - SameSite Cookie 설정 (0) | 2022.01.14 |