Home
>
Spring
>
π[Spring] μ°κ΄κ΄κ³μμμ "μμ§μ±"μ΄λ 무μμΌκΉμ?
Spring
Framework
π[Spring] μ°κ΄κ΄κ³μμμ βμμ§μ±βμ΄λ 무μμΌκΉμ?
- μ°κ΄κ΄κ³μμμ μμ§μ±μ λ°μ νκ² κ΄λ ¨λ λ°μ΄ν°μ λΉμ¦λμ€ λ‘μ§μ΄ νλμ λ¨μλ‘ λͺ¨μ¬ μλ‘ κ°νκ² κ²°ν©λμ΄ μμμ μλ―Έν©λλ€.
- JPA μ°κ΄κ΄κ³λ₯Ό ν΅ν΄ μμ§μ±μ λμ΄λ©΄, μλ‘ κ΄λ ¨ μλ μν°ν°λ€μ΄ νλμ μΌκ΄λ λΉμ¦λμ€ λ‘μ§μ μννκ³ μνλ₯Ό κ΄λ¦¬ν μ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ μ½λμ μ¬μ¬μ©μ±κ³Ό μ μ§λ³΄μμ±μ΄ ν₯μλ©λλ€.
1οΈβ£ μ°κ΄κ΄κ³μμ μμ§μ±μ΄ λμ μ€κ³μ μμ.
- μμ§μ±μ΄ λμ μ€κ³λ μ£Όλ‘ μ 그리κ²μ΄νΈ(Aggregate) κ°λ
κ³Ό λ°μ ν κ΄λ ¨μ΄ μμ΅λλ€.
- μλ₯Ό λ€μ΄, Orderμ OrderITemμ΄ μ°κ΄λ μν°ν°λΌκ³ κ°μ νλ©΄, Order μν°ν°κ° μ£Όλ¬Έ νλͺ© OrderItemλ€μ ν¬ν¨νκ³ , μ£Όλ¬Έμ μ΄ κ°κ²© κ³μ°, νλͺ© μΆκ°, μ£Όλ¬Έ μλ£μ κ°μ λΉμ¦λμ€ λ‘μ§μ μ±
μμ§λλ€.
- μ΄λ¬ν λ°©μμΌλ‘ μ°κ΄κ΄κ³κ° μμ§μ± μκ² κ΅¬μ±λλ©΄ κ΄λ ¨ λ°μ΄ν°μ λ‘μ§μ΄ νλμ λ¨μλ‘ μΊ‘μνλλ©°, μΌκ΄λ μνμ λ‘μ§μ μ μ§ν μ μμ΅λλ€.
@Entity
public class Order {
@Id
@GeneratedValue(stratege = GenerationType.IDENTITY)
private Long id;
private LocalDateTime orderDate;
private OrderStatus status;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<OrderItem> items = new ArrayList<>();
// λΉμ¦λμ€ λ‘μ§μ ν΅ν΄ μ°κ΄ κ΄κ³μ μμ§μ± μ μ§
public void addItem(OrderItem item) {
items.add(item);
item.setOrder(this);
}
public BigDecimal calculateTotalPrice() {
return items.stream()
.map(OrderItem::getTotalPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
public void completeOrder() {
if (items.isEmpty()) {
throw new IllegalStateException("μ£Όλ¬Έ νλͺ©μ΄ λΉμ΄ μμ΅λλ€.");
}
this.status = OrderStatus.COMPLETED;
}
}
2οΈβ£ μμ μ μμ§μ± μ€λͺ
.
- Orderμ OrderItemμ λ°μ ν κ΄κ³λ₯Ό λ°μνμ¬, Order μν°ν°λ OrderItemλ€μ ν¬ν¨νκ³ κ΄λ¦¬ν©λλ€.
- Order μν°ν° λ΄λΆμμ addItem, calculateTotalPrice, completeOrder λ± μ£Όλ¬Έκ³Ό κ΄λ ¨λ μ£Όμ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬ν¨μΌλ‘μ¨ κ΄λ ¨λ λ°μ΄ν°μ λ‘μ§μ΄ ν κ³³μ λͺ¨μ¬ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ Order κ°μ²΄κ° μ£Όλ¬Έκ³Ό κ΄λ ¨λ μνμ νλμ μΌκ΄λκ² κ΄λ¦¬ν μ μμΌλ©°, Order κ°μ²΄ μΈλΆμμλ μ΄ λ‘μ§μ μ§μ μ μΌλ‘ μ κ·Όν νμκ° μμ΅λλ€.
3οΈβ£ μμ§μ± λμ μ€κ³μ μ₯μ .
1οΈβ£ λ°μ΄ν°μ μΌκ΄μ± 보μ₯.
- μ°κ΄λ μν°ν°λ€μ΄ νλμ λ¨μλ‘ κ²°ν©λμ΄ μκΈ° λλ¬Έμ, μλͺ»λ μνλ κ°μ΄ κ°λ³μ μΌλ‘ λ³κ²½λλ μν©μ λ°©μ§ν μ μμ΅λλ€.
2οΈβ£ λΉμ¦λμ€ λ‘μ§μ μμ§μ±.
- κ΄λ ¨λ λ°μ΄ν°μ λ‘μ§μ΄ νλμ λ¨μμ λ¬Άμ¬μμ΄ λΉμ¦λμ€ λ‘μ§μ΄ λ λͺ
ννκ² μ μλλ©°, μ½λκ° μ§κ΄μ μ΄κ³ μ΄ν΄νκΈ° μ¬μμ§λλ€.
3οΈβ£ μ μ§λ³΄μμ± ν₯μ.
- κ΄λ ¨ λ‘μ§μ΄ μλ‘ λͺ¨μ¬ μμΌλ―λ‘ μμ μ¬νμ΄ λ°μν λ, ν΄λΉ λ¨μ λ΄μμλ§ λ³κ²½νλ©΄ λλ―λ‘ μ μ§λ³΄μκ° μ¬μμ§λλ€.
3οΈβ£ μμ½.
- μ°κ΄κ΄κ³μμμ μμ§μ±μ κ΄λ ¨λ λ°μ΄ν°μ λΉμ¦λμ€ λ‘μ§μ΄ νλμ λ¨μμ λ°μ νκ² κ²°ν©λμ΄ μλ κ²μ μλ―Έν©λλ€.
- μ΄λ₯Ό ν΅ν΄ κ°μ²΄κ° μμ μ μνμ νλμ μΌκ΄λκ² κ΄λ¦¬ν μ μμΌλ©°, λ°μ΄ν° μΌκ΄μ±κ³Ό μ μ§λ³΄μμ±μ΄ λμμ§λλ€.
- JPAμμμ μμ§μ± λμ μ°κ΄κ΄κ³λ λΉμ¦λμ€ λ‘μ§μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκ³ μμ€ν
μ μμ μ±μ ν₯μμν€λ λ° λμμ΄ λ©λλ€.