도메인 분석 설계
회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반
write-read.tistory.com
@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<>(); // == 비즈니스 로직 == // 재고수량 증가 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; } }
@Repository @RequiredArgsConstructor public class ItemRepository { private final EntityManager em; public void save(Item item){ if(item.getId() == null){ em.persist(item); } else{ em.merge(item); } } public Item findOne(Long id){ return em.find(Item.class , id); } public List<Item> findAll(){ return em.createQuery("select i from Item i" , Item.class) .getResultList(); } }
@Service @Transactional(readOnly = true) @RequiredArgsConstructor public class ItemService { private final ItemRepository itemRepository; @Transactional public void saveItem(Item item){ itemRepository.save(item); } public List<Item> findItems(){ return itemRepository.findAll(); } public Item findOne(Long id){ return itemRepository.findOne(id); } }
public class NotEnoughStockException extends RuntimeException{ public NotEnoughStockException() { super(); } public NotEnoughStockException(String message) { super(message); } public NotEnoughStockException(String message, Throwable cause) { super(message, cause); } public NotEnoughStockException(Throwable cause) { super(cause); } }
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런
실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다. 초급
www.inflearn.com
상품 도메인 개발
도메인 분석 설계
회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고관리가 필요하다. 상품의 종류는 도서 , 음반
write-read.tistory.com
구현 기능
상품 엔티티
상품 리포지토리
상품 서비스
상품 예외
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런
실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다. 초급
www.inflearn.com
'기록 > 스프링 부트 와 JPA 활용' 카테고리의 다른 글