๐ŸŒฑ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ธํŒ…

jijiยท2023๋…„ 11์›” 2์ผ
0

Spring Boot Project ๐ŸŒฑ

๋ชฉ๋ก ๋ณด๊ธฐ
1/16

๊ฐœ๋ฐœ ํ™˜๊ฒฝ
Java 17.0.8.1
Spring Boot 2.7.14
MySQL 8.0.33
IDE Intellij Gradle

1. IDE ์„ธํŒ…

: IntelliJ ์‚ฌ์šฉ
๐Ÿ‘‰๐Ÿป IntelliJ download & setting

2. ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ

1) ์ƒ์„ฑ

spring initializr๋ฅผ ํ™œ์šฉํ•ด์„œ ์•„๋ž˜ ์˜์กด์„ฑ๋“ค์„ ํฌํ•จ์‹œ์ผœ์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑ
๐Ÿ‘‰๐Ÿป Spring Initializr

โœ… Project

๊ณผ๊ฑฐ์—๋Š” Maven์„ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ตœ๊ทผ์—๋Š” Gradle์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ถ”์„ธ์ด๋‹ค.

โœ… Language

์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์–ธ์–ด ์„ ํƒ

โœ… Spring Boot

๋ฒ„์ „์„ ์„ ํƒํ•ด์ค€๋‹ค.

๋ฒ„์ „ ์˜†์— (SNAPSHOT)์ด๋ผ๊ณ  ์ ํ˜€ ์žˆ๋Š” ๊ฒƒ์€ ์•„์ง ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๋ฒ„์ „์ด๋ฉฐ, ๊ฐ„ํ˜น (M1)์ด๋ผ๊ณ  ์ ํ˜€์žˆ๋Š” ๊ฒƒ์€ ์ •์‹์œผ๋กœ ๋ฆด๋ฆฌ์ฆˆ๋˜์ง€ ์•Š์€ ๋ฒ„์ „์ด๋‹ค.

โš ๏ธย Spring Boot ๋ฒ„์ „์„ 3.X.X๋กœ ์„ค์ • ์‹œ ์ฃผ์˜

  • Java 17 ์ด์ƒ์„ ์‚ฌ์šฉ
  • javax ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ jakarta๋กœ ๋ณ€๊ฒฝ(์˜ค๋ผํด๊ณผ ์ž๋ฐ” ๋ผ์ด์„ผ์Šค ๋ฌธ์ œ)

โœ… Project Metadata

  • Group : ๊ธฐ์—… ๋„๋ฉ”์ธ๋ช…
  • Artifact : ๋นŒ๋“œ๋˜์–ด ๋‚˜์˜ฌ ๊ฒฐ๊ณผ๋ฌผ
  • Name : ํ”„๋กœ์ ํŠธ๋ช… (์ผ๋ฐ˜์ ์œผ๋กœ Artifact์™€ ๋™์ผํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.)
  • Description : ์„ค๋ช…
  • Package name : ํŒจํ‚ค์ง€ ์ด๋ฆ„ (Group๊ณผ Artifact๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.)

โœ… Packaging

Jar๋กœ ์„ ํƒํ•˜๋ฉด tomcat์ด ์ž๋™์œผ๋กœ ์„ธํŒ…๋˜์–ด ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ

โœ… Java

์ž๋ฐ” ๋ฒ„์ „ ์„ ํƒ

โœ… Dependencies

*Thymeleaf : HTML์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„

2) ์‹คํ–‰

  1. ๋‹ค์šด๋ฐ›์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ํด๋”๋กœ ์˜ฎ๊ฒจ์ฃผ๊ณ , ์••์ถ•์„ ํ•ด์ œํ•œ๋‹ค.
  2. IntelliJ๋ฅผ ์‹คํ–‰ํ•œ ๋’ค Open ๋ฒ„ํŠผ ํด๋ฆญ
  3. ์•ž์„œ ์••์ถ•ํ•ด์ œํ•œ ํŒŒ์ผ์˜ build.gradle ์„ ํƒ ํ›„ OK

  1. ํ”„๋กœ์ ํŠธ๋กœ ์—ด๊ธฐ ์„ ํƒ

๐Ÿ’ก ์˜คํ”ˆํ•˜๋ฉด ๋ฐ”๋กœ ํ”„๋กœ์ ํŠธ ์‹คํ–‰์‹œํ‚ค๊ธฐ!
1. main/java ํด๋” ์•„๋ž˜์— ์žˆ๋Š” ๋ฉ”์ธ.java ํŒŒ์ผ์„ ์˜คํ”ˆ ํ›„ ์‹คํ–‰(Ctrl+Shift+F10 ๋„ ๊ฐ€๋Šฅ)

  1. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰๋˜๋ฉด ์„ฑ๊ณต

  1. localhost:8080 ์— ์ ‘์†ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋Š” ๊ฒƒ์ด ์ •์ƒ

inteliJ ์„ค์ •

click !

  • Gradle (Ctrl + Alt + S)

  • ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ (Ctrl + Alt + Shift + S)

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ธํŒ…

1) 127.0.0.1 connection ์—ฐ๊ฒฐํ•˜๊ธฐ

๋กœ์ปฌ connection์„ ์ถ”๊ฐ€ํ•ด์„œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ sys ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธ

database

  1. DB ์ƒ์„ฑํ•˜๊ธฐ
DROP DATABASE database_name;
  1. UTF-8 ์„ค์ •
ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2) Spring Data JPA ์„ธํŒ…

ORM(Object-Relational Mapping) ์ด๋ž€?
์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜ ์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ Class์™€ RDB(Relational DataBase)์˜ ํ…Œ์ด๋ธ”์„ย ๋งคํ•‘(์—ฐ๊ฒฐ)ํ•œ๋‹ค๋Š” ๋œป์ด๋ฉฐ, ๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ์ฒด๋ฅผ RDB ํ…Œ์ด๋ธ”์— ์ž๋™์œผ๋กœ ์˜์†ํ™” ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด๋œ๋‹ค.
๐Ÿ’ก ์ž๋ฐ” ํด๋ž˜์Šค์™€ ์‹ค์ œ mysql ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ, JPA๋Š” java ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ORM ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉ

โ• ์ง์ ‘ ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ - build.gradle์— ์˜์กด์„ฑ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

dependencies {
    implementation 'mysql:mysql-connector-java'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
  1. application.properties(๋˜๋Š” .yml)์— DB ์ •๋ณด ์ถ”๊ฐ€ํ•˜๊ธฐ
# MySQL ์„ค์ •
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://<IP>:<Port>/<DB>?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul
    username: <username>
    password: <password>

# true ์„ค์ •์‹œ JPA ์ฟผ๋ฆฌ๋ฌธ ํ™•์ธ ๊ฐ€๋Šฅ
  jpa:
    show-sql: true

# DDL(create, alter, drop) ์ •์˜์‹œ DB์˜ ๊ณ ์œ  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    hibernate:
      ddl-auto: update

# JPA์˜ ๊ตฌํ˜„์ฒด์ธ Hibernate๊ฐ€ ๋™์ž‘ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ SQL์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.
    properties:
      hibernate.format_sql: true

MySQL InnoDB

InnoDB๋ž€?

# JPA ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋žซํผ ์ง€์ • (ํ˜„์žฌ MYSQL InnoDB๋ฅผ ์‚ฌ์šฉ์ค‘)
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

โœ… ddl-auto

  • create : ๊ธฐ์กด ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ ์ƒ์„ฑ [ DROP + CREATE ]
  • create-drop : CREATE ์†์„ฑ์— ์ถ”๊ฐ€๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ข…๋ฃŒํ•  ๋•Œ ์ƒ์„ฑํ•œ DDL์„ ์ œ๊ฑฐ [ DROP + CREATE + DROP ]
  • update : DB ํ…Œ์ด๋ธ”๊ณผ ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘ ์ •๋ณด๋ฅผ ๋น„๊ตํ•ด์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋งŒ ์ˆ˜์ • [ ํ…Œ์ด๋ธ”์ด ์—†์„ ๊ฒฝ์šฐ CREATE ]
  • validate : DB ํ…Œ์ด๋ธ”๊ณผ ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘์ •๋ณด๋ฅผ ๋น„๊ตํ•ด์„œ ์ฐจ์ด๊ฐ€ ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋‚จ๊ธฐ๊ณ  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ
  • none : ์ž๋™ ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

0๊ฐœ์˜ ๋Œ“๊ธ€