JPA1 - 상품 도메인 개발

young·2023년 5월 9일
0

Spring Boot

목록 보기
11/19
post-thumbnail

🖇️상품 엔티티 개발

비즈니스 로직 추가

stock(재고)관리를 쉽게 하기 위해 Item Entity에 추가

  • addStock()
  • removeStock()

📍Item

public void addStock(int quantity){
    this.stockQuantity += quantity;
}
public void removeStock(int quantity){
    int restStock = this.stockQuantity - quantity;
    if(restStock < 0){
        throw new NotEnoughStockException("need more stock");
    }
     this.stockQuantity = restStock;
}

📍exception/NotEnoughStockExcepion 생성

public class NotEnoughStockException extends RuntimeException{}

🖇️상품 리포지토리 개발

📍ItemRepository 생성
@Repository, @RequestArgsConstructor 추가
: EntityManager 선언

  • save()
  • findOne()
  • findAll()

EntityManager em

🖇️상품 서비스 개발

📍ItemService 생성

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor

기능

  • saveItem()
    : ItemRepository에서 save
  • findByItems()
  • findOne()
@Transactional
    public void saveItem(Item item){
        itemRepository.save((item));
    }

ItemService 자체 @Transactional를 readOnly로 해뒀기 때문에 saveItem에 @Transactional 지정 안하면 저장이 되지 않는다.
즉. 메서드에 가까운 게 우선권을 가진다.

profile
ฅʕ•̫͡•ʔฅ

0개의 댓글