JPAλ₯Ό ν΅ν΄ ν
μ΄λΈκ³Ό 맀νν ν΄λμ€λ @Entity
λ₯Ό νμλ‘ λΆμ¬μΌνλ€.
- κΈ°λ³Έ μμ±μλ νμμ΄λ€. (νλΌλ―Έν°κ° μλ public, protected μμ±μ)
- final ν΄λμ€, enum, interface, inner ν΄λμ€μλ μ¬μ©ν μ μλ€.
- μ μ₯ν νλμ finalμ μ¬μ©νλ©΄ μλλ€.
JPAκ° μν°ν° κ°μ²΄λ₯Ό μμ±ν λ κΈ°λ³Έ μμ±μλ₯Ό μ¬μ©νλ―λ‘, κΈ°λ³Έ μμ±μλ λ°λμ μμ΄μΌνλ€.
JPAλ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μλμΌλ‘ μμ±νλ κΈ°λ₯μ μ§μνλ€. ν΄λμ€μ 맀ν μ 보λ₯Ό 보면 μ΄λ€ ν μ΄λΈμ μ΄λ€ 컬λΌμ μ¬μ©νλμ§ μ μ μλλ°, JPAλ μ΄ λ§€νμ 보μ DB λ°©μΈμ μ°Έκ³ νμ¬ DB μ€ν€λ§λ₯Ό μμ±νλ€.
yamlμΌ κ²½μ° λ€μκ³Ό κ°μ΄ μμ±μ μ§μ ν΄μ€λ€.
spring:
jpa:
generate-ddl:true
hibernate:
ddl-auto: true
μ΅μ | μ€λͺ |
---|---|
create | κΈ°μ‘΄ ν μ΄λΈμ μμ ν λ€ μλ‘ μμ±νλ€. |
create-drop | create μμ±μ μΆκ°λ‘ μ ν리μΌμ΄μ μ μ’ λ£ν λ μμ±ν DDLμ μ κ±°νλ€. (DROP + CREATE + DROP) |
update | DB ν μ΄λΈκ³Ό μν°ν° 맀νμ 보λ₯Ό λΉκ΅ν΄μ λ³κ²½ μ¬νλ§ μμ νλ€. |
validate | DB ν μ΄λΈκ³Ό μν°ν° 맀νμ 보λ₯Ό λΉκ΅ν΄μ μ°¨μ΄κ° μμΌλ©΄ κ²½κ³ λ₯Ό λ¨κΈ°κ³ μ ν리μΌμ΄μ μ μ€ννμ§ μλλ€. μ΄ κ²½μ° DDLμ μμ νμ§ μλλ€. |
μ΄μ μλ²μμ create, create-drop, update μ²λΌ DDLμ μμ νλ μ΅μ μ μ λ μ¬μ©νλ©΄ μλλ€. μ€μ§ κ°λ° μλ²λ κ°λ° λ¨κ³μμλ§ μ¬μ©ν΄μΌνλ€. μ΄ μ΅μ μ μ΄μμ€μΈ DBμ ν μ΄λΈμ΄λ 컬λΌμ μμ ν μ μλ€.
- κ°λ° μ΄κΈ° λ¨κ³ : create λλ update
- μ΄κΈ°ν μνλ‘ μλνλ ν μ€νΈλ₯Ό μ§ννλ κ°λ°μ νκ²½κ³Ό CI μλ²λ create λλ create-drop
- ν μ€νΈ μλ²λ update λλ validate
- μ€ν μ΄μ§κ³Ό μ΄μ μλ²λ validate λλ none
νμ μ΄λ¦μ νμλ‘ μ λ ₯λμ΄μΌ νκ³ , 10μλ₯Ό μ΄κ³Όνλ©΄ μλλ€λ μ μ½μ‘°κ±΄μ΄ μλ€κ³ κ°μ νκ³ , μ€ν€λ§ μλ μμ±νκΈ°λ₯Ό ν΅ν΄ λ§λ€μ΄μ§λ DDLμ μ΄ μ μ½μ‘°κ±΄μ μΆκ°ν΄λ³΄μ.
@Entity
@Table(name="MEMBER")
public class Member {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME", nullable = false, length = 10)
private String username;
// ...
}
@Column
맀ν μ 보μ nullable μμ± κ°μ falseλ‘ μ§μ νλ©΄ μλ μμ±λλ DDLμ not null μ μ½μ‘°κ±΄μ μΆκ°ν μ μλ€. κ·Έλ¦¬κ³ length μμ± κ°μ μ¬μ©νλ©΄ μλ μμ±λλ DDLμ λ¬Έμμ ν¬κΈ°λ₯Ό μ§μ ν μ μλ€.
@Columnμ μ΄λ¬ν μμ±λ€μ (length, nullable ...) λ¨μ§ DDLμ μλ μμ±ν λλ§ μ¬μ©λκ³ , JPAμ μ€ν λ‘μ§μλ μν₯μ μ£Όμ§ μλλ€. λ°λΌμ μ€ν€λ§ μλ μμ± κΈ°λ₯μ μ¬μ©νμ§ μκ³ μ§μ DDLμ λ§λλ κ²½μ°μλ μ¬μ©ν μ΄μ κ° μλ€. κ·Έλλ μ΄ κΈ°λ₯μ μ¬μ©νλ©΄ κ°λ°μκ° μν°ν°λ§ λ³΄κ³ λ μμ½κ² λ€μν μ μ½μ‘°κ±΄μ νμ ν μ μλ μ₯μ μ΄ μλ€.