Home
>
CS
>
2024
>
πΎ [CS] μν°ν°(Entity)λ 무μμΌκΉμ?
CS
πΎ [CS] μν°ν°(Entity)λ 무μμΌκΉμ?
-
μν°ν°(Entity)λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented Programming, OOP)κ³Ό λ°μ΄ν°λ² μ΄μ€ μ€κ³μμ λͺ¨λ μ¬μ©λλ κ°λ
μΌλ‘, νΉν JPA(Java Persistence API)μμ μμ£Ό μΈκΈλ©λλ€.
- μν°ν°(Entity)λ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈκ³Ό 맀νλλ μλ° ν΄λμ€λ₯Ό μλ―Ένλ©°, λ°μ΄ν°λ² μ΄μ€μ κ° ν(Row)μ΄ μλ° ν΄λμ€μ μΈμ€ν΄μ€(Instance, κ°μ²΄)λ‘ λμλ©λλ€.
1οΈβ£ μν°ν°μ μ μ.
1οΈβ£ λ°μ΄ν°λ² μ΄μ€μ ν(Record).
- λ°μ΄ν°λ² μ΄μ€μμλ ν
μ΄λΈμ΄ μ¬λ¬ ν(Record)μ κ°μ§λλ€.
- μν°ν°(Entity)λ κ·Έ ν
μ΄λΈμ κ° ν(Record)μ μλ° κ°μ²΄(Intance)λ‘ λ³νλ©λλ€.
- μλ₯Ό λ€μ΄,
User
ν
μ΄λΈμ΄ μλ€λ©΄, ν
μ΄λΈμ κ° λ μ½λλ User
μν°ν° κ°μ²΄λ‘ λ³νλ©λλ€.
2οΈβ£ JPAμμμ μν°ν°.
- JPA(Java Persistence API)μμλ μν°ν°κ° λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈκ³Ό 맀νλλ©°, μ΄λ₯Ό μν΄ ν΄λμ€μ
@Entity
μ΄λ
Έν
μ΄μ
(Annotation)μ λΆμ
λλ€.
- μν°ν°(Entity) ν΄λμ€μ μΈμ€ν΄μ€(Instance, κ°μ²΄)λ λ°μ΄ν°λ² μ΄μ€μμ νλμ ν(Row, Record)μ λνλ΄λ©°, κ·Έ νλλ ν
μ΄λΈμ κ° μ΄(Column)μ 맀νλ©λλ€.
3οΈβ£ κ°μ²΄ μ§ν₯μ λ°μ΄ν° λͺ¨λΈλ§.
- μν°ν°(Entity)λ λ°μ΄ν°λ² μ΄μ€μ λ μ½λ(Record)λ₯Ό λ¨μν μλ° κ°μ²΄λ‘ λ³ννλ κ²λΏλ§ μλλΌ, κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ(Object-Oriented Programming, OOP)μμμ μν(μμ±)μ νλ(λ©μλ)μ κ°μ§ μ μμ΅λλ€.
- μ¦, λ°μ΄ν°μ κ·Έ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ©μλκ° ν¨κ» μ μλ©λλ€.
2οΈβ£ μν°ν°μ νΉμ§.
π ν΄λμ€μ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈ 맀ν.
- μν°ν° ν΄λμ€λ λ³΄ν΅ νλμ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈκ³Ό 맀νλ©λλ€.
π νλμ μ΄(Column) 맀ν.
- μν°ν° ν΄λμ€μ νλλ ν
μ΄λΈμ μ΄(Column)κ³Ό 맀νλ©λλ€.
π κΈ°λ³Έ ν€(Primary Key).
- μν°ν°λ λ°λμ νλμ νλλ₯Ό κΈ°λ³Έ ν€(Primary Key)λ‘ μ§μ ν΄μΌ ν©λλ€.
- μ΄ νλλ ν
μ΄λΈμμ κ° ν(Row)μ κ³ μ νκ² μλ³νλ λ° μ¬μ©λ©λλ€.
π μν κ΄λ¦¬.
- μν°ν°λ JPA(Java Persistence API)κ° κ΄λ¦¬νλ©°, μν°ν°μ μν(μμ±, μμ , μμ )λ₯Ό μλμΌλ‘ λ°μ΄ν°λ² μ΄μ€μ λ°μν μ μμ΅λλ€.
3οΈβ£ μν°ν° ν΄λμ€μ μ.
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
@Entity // μ΄ ν΄λμ€λ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈκ³Ό 맀νλλ μν°ν°μμ λνλ
λλ€.
public class User {
@Id // κΈ°λ³Έ ν€(Primary Key)λ₯Ό μ§μ .
@GeneratedValue(strategy = Generation.IDENTITY) // κΈ°λ³Έ ν€(Primary Key) μλ μμ± μ λ΅ μ€μ .
private Long id;
private String name;
private String email;
// κΈ°λ³Έ μμ±μ.
public User() {}
// μμ±μ, getter λ° setter
public User(String name, String email) {
this.name = name;
this.email = email;
}
// Getter and Setter
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;
}
}
4οΈβ£ μν°ν°μ μ£Όμ μμ.
1οΈβ£ @Entity
- μ΄ μ΄λ
Έν
μ΄μ
μ ν΄λμ€κ° λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈκ³Ό 맀νλλ€λ κ²μ μλ―Έν©λλ€.
2οΈβ£ @Id
- μν°ν° ν΄λμ€μ νλ μ€ νλλ λ°λμ κΈ°λ³Έ ν€(Primary Key)λ‘ μ§μ λμ΄μΌ νλ©°,
@Id
μ΄λ
Έν
μ΄μ
μ μ¬μ©ν©λλ€.
3οΈβ£ @GeneratedValue
- κΈ°λ³Έ ν€(Primary Key)κ° μλμΌλ‘ μμ±λλλ‘ μ€μ ν μ μμ΅λλ€.
-
GenerationType.IDENTITY
λ λ°μ΄ν°λ² μ΄μ€κ° μλμΌλ‘ ν€λ₯Ό μ¦κ°μν€λλ‘ νλ μ λ΅μ
λλ€.
5οΈβ£ μν°ν°μ μ₯μ .
π κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°κ³Ό λ°μ΄ν°λ² μ΄μ€μ ν΅ν©.
- μν°ν°λ₯Ό μ¬μ©νλ©΄ λ°μ΄ν°λ² μ΄μ€μ ν
μ΄λΈκ³Ό μλ° κ°μ²΄λ₯Ό μΌκ΄λ λ°©μμΌλ‘ λ€λ£° μ μμ΄, μ½λμ κ°λ
μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν¬ μ μμ΅λλ€.
π μλνλ λ°μ΄ν°λ² μ΄μ€ μμ
.
- JPAμ κ°μ νλ μμν¬λ μν°ν°μ μνλ₯Ό μΆμ νμ¬, λ°μ΄ν°λ² μ΄μ€μμ λ°μνλ μμ
(μ½μ
, κ°±μ , μμ )μ μλμΌλ‘ μ²λ¦¬ν΄μ€λλ€.
π λ°μ΄ν°λ² μ΄μ€ λ
립μ±.
- μν°ν°λ₯Ό μ¬μ©νλ©΄ νΉμ λ°μ΄ν°λ² μ΄μ€μ μ’
μλμ§ μκ³ λ€μν λ°μ΄ν°λ² μ΄μ€μμ λμΌν μ½λλ₯Ό μ¬μ©ν μ μμ΅λλ€.
6οΈβ£ μμ½.
-
μν°ν°(Entity)λ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈκ³Ό 맀νλλ μλ° ν΄λμ€μ΄λ©°, JPA(Java Persistence API)λ₯Ό ν΅ν΄ κ°μ²΄ μ§ν₯μ μΈ λ°©μμΌλ‘ λ°μ΄ν°λ² μ΄μ€μ μνΈμμ©ν μ μκ² ν΄μ€λλ€.
- μν°ν° ν΄λμ€λ λ°μ΄ν°λ² μ΄μ€μ ν
μ΄λΈμ μλ° κ°μ²΄(Instance)λ‘ νννκ³ , ν
μ΄λΈμ κ° ν(Row)μ μν°ν° κ°μ²΄λ‘ λ³ννμ¬ λ°μ΄ν°λ² μ΄μ€ μμ
μ μ½κ² μ²λ¦¬ν μ μλλ‘ λμμ€λλ€.