[실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화] API 개발 고급(2): 지연 로딩과 조회 성능 최적화
·
Back-End/JPA
[작성일: 2023. 10. 01] 간단한 주문 조회V1: 엔티티를 직접 노출주문 + 배송정보 + 회원을 조회하는 API를 만들고, 지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해 보자. @RestController@RequiredArgsConstructorpublic class OrderSimpleApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/simple-orders") public List ordersV1() { List all = orderRepository.findAllByString(new OrderSearch()); return all; ..
[실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화] API 개발 고급(1): 조회용 샘플 데이터 입력
·
Back-End/JPA
[작성일: 2023. 09. 29] 조회용 샘플 데이터 입력 API 개발 고급 설명을 위해 샘플 데이터를 입력하자. user A는 JPA1 BOOK, JPA2 BOOK을 주문했다.user B는 SPRING1 BOOK, SPRING2 BOOK을 주문했다.최종적으로는 주문 2건이 만들어진다. @Component@RequiredArgsConstructorpublic class InitDb { private final InitService initService; @PostConstruct public void init() { initService.dbInit1(); } @Component @Transactional @RequiredArgsConstructor ..
[실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화] API 개발 기본
·
Back-End/JPA
[작성일: 2023. 09. 28]  회원 등록 API@RestController@RequiredArgsConstructorpublic class MemberApiController { private final MemberService memberService; @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) { Long id = memberService.join(member); return new CreateMemberResponse(id); } @Data @AllArgsConstructor sta..
[실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발] 웹 계층 개발
·
Back-End/JPA
[작성일: 2023. 08. 28]  홈 화면과 레이아웃HomeController와 html(타임리프 사용, 코드 생략)을 작성해서 기본적인 홈 화면 레이아웃을 만들어주었다.@Slf4j@Controllerpublic class HomeController { @RequestMapping("/") public String home() { log.info("home controller"); return "home"; }}  참고: hierachical-style layouts예제에서는 뷰 템플릿을 간단하게 작성하기 위해 header, footer 같은 템플릿 파일을 반복해서 포함한다. 다음 링크의 Hierachical-style layouts을 참고하려면 이런 부분도 ..
[실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발] 주문 도메인 개발
·
Back-End/JPA
[작성일: 2023. 08. 26] 주문, 주문 상품 엔티티 개발주문 엔티티 개발@Entity@Getter@Setter@Table(name = "orders")@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Order { // ...생략 // 생성 메서드 추가 public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) { Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for ..
[실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발] 상품 도메인 개발
·
Back-End/JPA
[작성일: 2023. 08. 25]  상품 엔티티 개발상품 엔티티 코드에서 비즈니스 로직을 추가한다.addStock() 메서드는 파라미터로 넘어온 수만큼 재고를 늘린다. 이 메서드는 재고가 증가하거나 상품 주문을 취소해서 재고를 다시 늘려야 할 때 사용한다.removeStock() 메서드는 파라미터로 넘어온 수만큼 재고를 줄인다. 만약 재고가 부족하면 예외가 발생하며 주로 상품을 주문할 때 사용한다. @Entity@Getter@Setter@Inheritance(strategy = InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name = "dtype")public abstract class Item { // 코드 생략 // 비즈니스 로직 추가 // s..