본문 바로가기

java25

주문 개발 2 (Order- 주문 개발) 일단 Order 엔티티에 코드를 추가해준다. //생성 메서드 // public static Order createOrder (Member member, Delivery delivery, OrderItem... orderItems){ Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for(OrderItem orderItem : orderItems){ order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; } //비즈니스 로직// /** * 주문 취.. 2022. 7. 14.
주문 개발 1 (Item - 상품 개발) 이제 핵심로직인 주문을 개발한다. 제일처음으로 한 것은 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; } 재고 증가와 재고 감소는 현재 객체로 받은 재고에서 변동이 생기는 quanti.. 2022. 7. 14.
회원 기능 테스트 1 .디렉토리 생성 test 디렉토리 밑에 service라는 디렉토리를 생성한 뒤 MemberServiceTest 클래스를 생성한다. 2. 코드 작성 1. 어노테이션 - @RunWith(SpringRunner.class) : Junit 실행 시 Spring 도 같이 실행을 하겠다는 어노테이션 - @SpringBootTest : 스프링 컨테이너 안에서 테스트를 돌린다. - @Transactional : 하나의 쿼리로 진행하여 테스트가 끝난 후 롤백을 진행하게 된다. 2. 회원가입 테스트 - @Transactional 의 사용으로 자동으로 Rollback이 되어 Insert 쿼리가 날라가지 않는다. - @Rollback(false) - 테스트 코드는 기본적으로 Rollback 을 진행한다. - Rollbac.. 2022. 7. 12.
회원 서비스 개발 1. 패키지 생성 service 패키지를 새로 생성 후 MemberService클래스를 만든다. 2. 서비스 코드 개발 상단에 @Service, @Transactional 을 선언하여 준다. Transactional의 속성으로 readOnly 라는 속성을 true로 해주게 되면 읽기의 역할을 진행하여 리소스 상의 부하를 줄일 수 있지만, 쓰기 역할의 메서드가 실행이 안될수 있어 쓰기 역할의 메서드에는 따로 @Transactional을 선언하여 준다. 기본적인 메서드들을 작성해주고, 쓰기 역할을 하는 join 에만 @Transactional을 다시 선언해준다. 인젝션 가장 기본적인 쓰임새는 @Autowired로 인젝션을 생성시켜주는것이다. 1. 세터 인젝션 - 장점 : 테스트 코드에서 Mock으로 직접 주.. 2022. 7. 12.