π[Spring] JPA μ΄λ
Έν
μ΄μ
- @Column
-
@Column
μ JPA(Java Persistence API)μμ μ¬μ©λλ μ΄λ Έν μ΄μ μΌλ‘, μν°ν°(Entity) ν΄λμ€μ νλλ₯Ό λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈ 컬λΌ(Column, μ΄)μ 맀νν λ μ¬μ©λ©λλ€.- μ¦, μλ° ν΄λμ€μ νλμ λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈμ νΉμ 컬λΌ(Column, μ΄) κ°μ 맀νμ μ μνλ μν μ ν©λλ€.
πββοΈμν°ν°(Entity)λ 무μμΌκΉμ?
1οΈβ£ μ£Όμ νΉμ§.
1οΈβ£ 컬λΌ(Column, μ΄)κ³Ό νλ 맀ν.
-
@Column
μ΄λ Έν μ΄μ μ μν°ν°(Entity) ν΄λμ€μ νλκ° λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈμ μ΄λ 컬λΌ(Column, μ΄)κ³Ό 맀νλ μ§λ₯Ό λͺ μμ μΌλ‘ μ§μ ν©λλ€. - 맀νλλ 컬λΌ(Column)μ μ΄λ¦, κΈΈμ΄ nullable μ¬λΆ, κ³ μ μ μ½μ‘°κ±΄ λ±μ μ€μ ν μ μμ΅λλ€.
2οΈβ£ μ΅μ μ€μ .
-
@Column
μ μ¬μ©νμ¬ μ»¬λΌ(Column)μ μμ±(κΈΈμ΄, nullable μ¬λΆ λ±) μΈλ°νκ² μ μ΄ν μ μμ΅λλ€.- λ§μ½
@Column
μ μλ΅νλ©΄ JPA(Java Persistence API)κ° μλμΌλ‘ νλ μ΄λ¦μ 컬λΌ(Column, μ΄) μ΄λ¦μΌλ‘ μ¬μ©νκ³ , κΈ°λ³Έκ°μΌλ‘ μ²λ¦¬ν©λλ€.
- λ§μ½
2οΈβ£ μ£Όμ μμ±.
π name
- 맀νν λ°μ΄ν°λ² μ΄μ€ 컬λΌ(Column, μ΄)μ μ΄λ¦μ λͺ
μμ μΌλ‘ μ§μ ν©λλ€.
- μ§μ νμ§ μμΌλ©΄, νλ μ΄λ¦μ΄ κ·Έλλ‘ μ»¬λΌ(Column, μ΄) μ΄λ¦μΌλ‘ μ¬μ©λ©λλ€.
π nullable
- 컬λΌ(Column, μ΄)μ΄
NULL
κ°μ νμ©νλμ§ μ¬λΆλ₯Ό μ€μ ν©λλ€.- κΈ°λ³Έκ°μ
true
λ‘,nullable = false
λ‘ μ€μ νλ©΄NOT NULL
μ μ½μ‘°κ±΄μ΄ 걸립λλ€.
- κΈ°λ³Έκ°μ
π unique
- 컬λΌ(Column, μ΄)μ κ³ μ μ μ½μ‘°κ±΄μ μ€μ ν μ μμ΅λλ€.
- κΈ°λ³Έκ°μ
false
μ΄λ©°,unique = true
λ‘ μ€μ νλ©΄ ν΄λΉ 컬λΌ(Column, μ΄)μ κ³ μ ν κ°λ§ μ μ₯λ μ μμ΅λλ€.
- κΈ°λ³Έκ°μ
π length
- λ¬Έμμ΄ μ»¬λΌ(Column, μ΄)μ μ΅λ κΈΈμ΄λ₯Ό μ€μ ν©λλ€.
- κΈ°λ³Έκ°μ 255μ λλ€.
- μ£Όλ‘
VARCHAR
νμ 컬λΌ(Column, μ΄)μμ μ¬μ©λ©λλ€.
π precision
- μμμ μ΄ ν¬ν¨λ μ«μ(μ:
BigDecimal
)μ μ λ°λλ₯Ό μ§μ ν©λλ€.-
precision
μ μμμ μμ μ 체 μλ¦Ώμλ₯Ό μλ―Έν©λλ€.
-
π scale
- μμμ μ΄ν μλ¦Ώμλ₯Ό μ€μ ν©λλ€.
-
scale
μ μμμ μ΄νμ μλ¦Ώμλ₯Ό μλ―Έν©λλ€.
-
3οΈβ£ μμ.
1οΈβ£ κΈ°λ³Έμ μΈ μ¬μ©.
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Column;
@Entity
public class User {
@Id
private Long id;
// 맀νν λ°μ΄ν°λ² μ΄μ€ 컬λΌμ μ΄λ¦μ "user_name"μΌλ‘ μ§μ .
// NOT NULL μ μ½ μ‘°κ±΄μ κ±Έμ.
// λ¬Έμμ΄ μ»¬λΌμ μ΅λ κΈΈμ΄λ₯Ό 100μΌλ‘ μ€μ .
@Column(name = "user_name", nullable = false, length = 100)
private String name;
// κ³ μ μ μ½μ‘°κ±΄μ μ€μ .
// κ³ μ ν κ°λ§ μ μ₯λ μ μμ.
@Column(unique = true)
private String email;
// κΈ°λ³Έ μμ±μ, getter, setter
public User() {}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
-
@Column(name = "user_name", nullable = false, length = 100)
- μ΄ μ΄λ
Έν
μ΄μ
μ
name
νλλ₯Ό λ°μ΄ν°λ² μ΄μ€μuser_name
컬λΌμ 맀νν©λλ€. - μ΄ μ»¬λΌμ NOT NULL μ μ½μ‘°κ±΄μ΄ μ μ©λλ©°, μ΅λ κΈΈμ΄λ 100μλ‘ μ νλ©λλ€.
- μ΄ μ΄λ
Έν
μ΄μ
μ
-
@Column(unique = true)
- μ΄ μ΄λ
Έν
μ΄μ
μ
email
νλμ κ³ μ μ μ½μ‘°κ±΄μ μ€μ νμ¬,email
κ°μ΄ μ μΌνλλ‘ λ³΄μ₯ν©λλ€.
- μ΄ μ΄λ
Έν
μ΄μ
μ
2οΈβ£ precision
κ³Ό scale
μ¬μ© μμ(μμμ μ²λ¦¬)
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Column;
import javax.persistence.BigDecimal;
@Entity
public class Product {
@Id
private Long id;
@Column(precision = 10, scale = 2)
private BigDecimal price;
// κΈ°λ³Έ μμ±μ, getter, setter
public Product() {}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
}
-
@Column(precision = 10, scale = 2)
-
price
νλλ μμμ μ΄ν λ μ리λ₯Ό ν¬ν¨νλ μ΅λ 10μ리μ μ«μλ‘ μ μ₯λ©λλ€.- μλ₯Ό λ€μ΄, κ°κ²©μ΄ 12345678.99μ κ°μ κ°μ κ°μ§ μ μμ΅λλ€.
- μ¬κΈ°μμ
precision
μ μ«μμ μ 체 μλ¦Ώμλ₯Ό,scale
μ μμμ μ΄ν μλ¦Ώμλ₯Ό μλ―Έν©λλ€.
-
4οΈβ£ @Column
μ κΈ°λ³Έκ°.
-
@Column
μ΄λ Έν μ΄μ μ μλ΅ν΄λ JPA(Java Persistence API)λ μλμΌλ‘ μ΄λ¦μ 컬λΌ(Column, μ΄) μ΄λ¦μΌλ‘ μ¬μ©νκ³ , κΈ°λ³Έ μμ±μ μ μ©ν©λλ€.- μλ₯Ό λ€μ΄, μλ μ½λμμ
name
νλλ μλμΌλ‘name
μ΄λΌλ 컬λΌ(Column, μ΄)κ³Ό 맀νλ©λλ€.
- μλ₯Ό λ€μ΄, μλ μ½λμμ
@Entity
public class User {
@Id
private Long id;
private String name; // @Columnμ μλ΅νμ§λ§ νλ μ΄λ¦μ΄ μ»¬λΌ μ΄λ¦μΌλ‘ μ¬μ©λ¨
// κΈ°λ³Έ μμ±μ, getter, setter
}
5οΈβ£ μμ½.
-
@Column
μ΄λ Έν μ΄μ μ μν°ν° νλμ λ°μ΄ν°λ² μ΄μ€ 컬λΌ(Column, μ΄) κ°μ 맀νμ μ μνλ μν μ ν©λλ€. - μ΄ μ΄λ Έν μ΄μ μ μ¬μ©νλ©΄ 컬λΌ(Column, μ΄)μ μ΄λ¦, nullable μ¬λΆ, κ³ μ μ μ½μ‘°κ±΄ λ±μ μΈλ°νκ² μ€μ ν μ μμ΅λλ€.
- νμλ μλμ§λ§, λͺ μμ μΌλ‘ λ°μ΄ν°λ² μ΄μ€ 컬λΌ(Column, μ΄)μ μμ±μ μ§μ ν΄μΌ ν κ²½μ° μ μ©νκ² μ¬μ©ν μ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ κ°λ°μλ λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈ ꡬ쑰μ λ§μΆμ΄ μν°ν° ν΄λμ€λ₯Ό μ€κ³νκ³ , λ°μ΄ν°λ² μ΄μ€ 컬λΌ(Column, μ΄)κ³Όμ 맀νμ μ ννκ² μ€μ ν μ μμ΅λλ€.