상품 도메인 개발
상품 엔티티에 비즈니스 로직 추가
@Entity
@Getter @Setter
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "dtype")
public abstract class Item {
@Id @GeneratedValue
@Column(name = "item_id")
private Long id;
private String name;
private int price;
private int stockQuantity;
@ManyToMany(mappedBy = "items")
private List<Category> categories = new ArrayList<>();
/**
* 비즈니스 로직
*/
// stock 증가
public void addStock(int quantity) {
this.stockQuantity += quantity;
}
// stock 감소
public void removeStock(int quantity) {
int restStock = this.stockQuantity - quantity;
if (restStock < 0) {
throw new NotEnoughStockException("need more stock");
}
this.stockQuantity = restStock;
}
}레포지토리
서비스
레포지토리에 단순히 위임만 한다.
Last updated