π[Spring] spring.jap.hibernate.ddl-auto μ€μ μ΅μ μ΄λ 무μμΌκΉμ?
- spring.jpa.hibernate.ddl-autoλ Spring Bootμμ JPA(Java Persistence API)μ Hibernateλ₯Ό μ¬μ©ν λ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§μ μμ±μ μ μ΄νλ μ€μ μ΅μ μ λλ€.
π μ€ν€λ§(Schema)
λ°μ΄ν°λ² μ΄μ€μ ꡬ쑰λ₯Ό μ μνλ μ©μ΄λ‘, λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°κ° μ΄λ»κ² μ μ₯λκ³ , μ΄λ»κ² μ‘°μ§νλλμ§λ₯Ό μ€λͺ νλ λ° μ¬μ©λ©λλ€.
μ€ν€λ§λ λ°μ΄ν°λ² μ΄μ€μ λ Όλ¦¬μ μ€κ³λ₯Ό λνλ΄λ©°, ν μ΄λΈ, λ·°, μΈλ±μ€, νΈλ¦¬κ±°, μ μ₯ νλ‘μμ , μ μ½ μ‘°κ±΄ λ±κ³Ό κ°μ λ°μ΄ν°λ² μ΄μ€ κ°μ²΄λ€μ΄ μ΄λ»κ² ꡬμ±λλμ§λ₯Ό μ μν©λλ€.
-
ddl-auto
μμ βDDLβμ Data Definition Languageμ μ½μλ‘, λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈ, μΈλ±μ€, μ»¬λΌ λ±μ μ μνλ SQL(Structured Query Language) λͺ λ Ήμ΄μ λλ€. - μ΄ μ€μ μ μ ν리μΌμ΄μ μ μν°ν°(Entity) ν΄λμ€κ° λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)μ μΌμΉνλλ‘ μλμΌλ‘ μ²λ¦¬ν μ§ μ¬λΆλ₯Ό κ²°μ ν©λλ€.
πββοΈ μν°ν°(Entity)λ 무μμΌκΉμ?
1οΈβ£ μ€μ κ°.
-
spring.jpa.hibernate.ddl-auto
λ λ€μκ³Ό κ°μ μ¬λ¬ κ°μ§ κ°μ κ°μ§ μ μμ΅λλ€.- κ° κ°μ Hibernateκ° μ ν리μΌμ΄μ μ€ν μ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)μ λν΄ μ΄λ€ λμμ μνν μ§λ₯Ό μ μν©λλ€.
1οΈβ£ none
-
μ무 μμ
λ νμ§ μμ.
- Hibernateλ λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈ ꡬ쑰λ₯Ό λ³κ²½νμ§ μμ΅λλ€.
- λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)λ₯Ό μλμΌλ‘ κ΄λ¦¬ν λ μ¬μ©ν©λλ€.
2οΈβ£ validate
- μν°ν°(Entity) ν΄λμ€μ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)κ° μΌμΉνλμ§ κ²μ¦ν©λλ€.
- μ ν리κ²μ΄μ
μ΄ μμν λ, μν°ν°(Entity) ν΄λμ€μ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)κ° μ νν μΌμΉνλμ§ νμΈν©λλ€.
- λ§μ½ μΌμΉνμ§ μμΌλ©΄ μ ν리μΌμ΄μ μ΄ μμΈλ₯Ό λμ§λ©° μμμ μ€ν¨ν©λλ€.
- μ€ν€λ§(Schema)κ° μ΄λ―Έ μ‘΄μ¬νκ³ , μ€ν€λ§(Schema)μ λ³κ²½ μμ΄ μν°ν°(Entity) 맀νμ΄ μ¬λ°λ₯Έμ§ νμΈν λ μ¬μ©λ©λλ€.
3οΈβ£ update
- μν°ν°(Entity) ν΄λμ€μ λ³κ²½ μ¬νμ κΈ°μ‘΄ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)μ λ°μν©λλ€.
- λ°μ΄ν°λ² μ΄μ€μ μ΄λ―Έ μ‘΄μ¬νλ ν
μ΄λΈ ꡬ쑰μ λ§μΆμ΄ νμν κ²½μ° μλ‘μ΄ μ»¬λΌ(Column,μ΄)μ μΆκ°νκ±°λ μμ ν©λλ€.
- κ·Έλ¬λ κΈ°μ‘΄ λ°μ΄ν°λ ꡬ쑰λ₯Ό μμ νμ§λ μμ΅λλ€.
- κ°λ° μ€ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)κ° μμ£Ό λ³κ²½λ λ μ μ©νμ§λ§, νλ‘λμ νκ²½μμλ μ£Όμν΄μ μ¬μ©ν΄μΌ ν©λλ€.
4οΈβ£ create
- μ ν리μΌμ΄μ μμ μ κΈ°μ‘΄ λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈμ μμ ν ν μλ‘ μμ±ν©λλ€.
- λͺ¨λ κΈ°μ‘΄ λ°μ΄ν°λ μμ λλ©°, μν°ν°(Entity) ν΄λμ€μ μ μλ λλ‘ μλ‘μ΄ ν μ΄λΈκ³Ό 컬λΌ(Column, μ΄)μ μμ±ν©λλ€.
- κ°λ° μ΄κΈ° λ¨κ³μμ μ¬μ©λλ©°, λ§€λ² λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μλ‘ μμ±ν΄μΌ ν λ μ ν©ν©λλ€.
5οΈβ£ create-drop
- μ ν리μΌμ΄μ μμ μ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μμ±νκ³ , μ’ λ£ μ μ€ν€λ§λ₯Ό μμ ν©λλ€.
-
create
μ μ μ¬νμ§λ§, μ ν리μΌμ΄μ μ΄ μ’ λ£λ λ ν μ΄λΈμ λͺ¨λ μμ νλ μΆκ° λμμ΄ μμ΅λλ€. - ν μ€νΈ νκ²½μμ μ μ©νκ² μ¬μ©ν μ μμΌλ©°, κ°λ°μ΄ λλλ©΄ νλ‘λμ νκ²½μμλ μ¬μ©νμ§ μλ κ²μ΄ μ’μ΅λλ€.
2οΈβ£ μμ.
- Spring Bootμ
application.properties
λλapplication.yml
νμΌμμspring.jpa.hibernate.ddl-auto
λ₯Ό μ€μ ν μ μμ΅λλ€.
1οΈβ£ application.properties μμ.
spring.jpa.hibernate.ddl-auto=update
application.yml μμ.
spring:
jpa:
hibernate:
ddl-auto: update
- μ μ€μ μμλ
update
λ₯Ό μ¬μ©νμ¬ μ ν리μΌμμ°μ΄ μμλ λ Hibernateκ° μν°ν°(Entity) ν΄λμ€μ λ³κ²½ μ¬νμ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)μ λ°μνμ§λ§, κΈ°μ‘΄ λ°μ΄ν°λ₯Ό μμ νμ§ μμ΅λλ€.
3οΈβ£ κ° μ€μ κ°μ μ ν©ν μ¬μ© νκ²½.
-
none
- μ΄λ―Έ μμ ν μ€μ λ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νκ³ , Hibernateκ° μ€ν€λ§(Schema)μ λν΄ μλ¬΄λ° λ³κ²½λ νμ§ μκΈ°λ₯Ό μν λ μ¬μ©.
-
validate
- λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)κ° μ΄λ―Έ μ€λΉλμ΄ μκ³ , μν°ν° ν΄λμ€μ μ€ν€λ§ κ°μ λΆμΌμΉλ₯Ό νμΈνκ³ μΆμ λ μ¬μ©.
-
update
- κ°λ° μ€, λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)λ₯Ό μ μ§νλ©΄μ μν°ν°(Entity) ν΄λμ€μ λ³κ²½ μ¬νμ λ°μνκ³ μΆμ λ μ¬μ©.
-
create
- κ°λ° μ€, λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§(Schema)λ₯Ό μμ ν μλ‘ μμ±νκ³ μΆμ λ μ¬μ©.
-
create-drop
- ν μ€νΈ μ, μ ν리μΌμ΄μ μ€ν μ€μλ§ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μμ±νκ³ μ’ λ£ μ λͺ¨λ λ°μ΄ν°λ₯Ό μμ ν λ μ¬μ©.
4οΈβ£ μ£Όμ μ¬ν.
-
create
μcreate-drop
μ νλ‘λμ νκ²½μμ μ¬μ©νμ§ μλ κ²μ΄ μ’μ΅λλ€.- μ΄ κ°λ€μ κΈ°μ‘΄ λ°μ΄ν°λ₯Ό μμ νλ―λ‘, μ€ λ°μ΄ν°λ² μ΄μ€μ μ¬μ©νλ©΄ λ°μ΄ν° μμ€μ΄ λ°μν μ μμ΅λλ€.
-
update
λ κ°λ° νκ²½μμ μ μ©νμ§λ§, νλ‘λμ νκ²½μμλ μμμΉ λͺ»ν λ³κ²½μ΄ λ°μν μ μμΌλ―λ‘ μ£Όμκ° νμν©λλ€. -
validate
λ μ€ν€λ§(Schema) κ²μ¦λ§ μννλ―λ‘, νλ‘λμ νκ²½μμ μ€ν€λ§(Schema)μ μΌκ΄μ±μ νμΈνλ μ©λλ‘ μ¬μ©λ μ μμ΅λλ€.
5οΈβ£ μμ½.
-
spring.jpa.hibernate.ddl-auto
λ Hibernateκ° μ ν리μΌμμ° μμ μ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μ΄λ»κ² μ²λ¦¬ν μ§λ₯Ό μ μνλ μ€μ μ λλ€. - κ°λ°, ν μ€νΈ, νλ‘λμ νκ²½μ λ°λΌ μ μ ν κ°μ μ νν΄ μ¬μ©ν μ μμΌλ©°, μ΄ μ€μ μ ν΅ν΄ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μλμΌλ‘ μμ±νκ±°λ κ²μ¦, μ λ°μ΄νΈνλ κ³Όμ μ κ°νΈνκ² κ΄λ¦¬ν μ μμ΅λλ€.