API를 통해서 원하는 엔티티(or DTO)를 조회하는 방법에 대해 알아보았다. 해당 내용들을 정리해보자. 1. 엔티티 조회 V1 - 엔티티 조회해서 그대로 반환 DTO를 통하지 않고 쿼리를 통해 반환 받은 목록을 그대로 반환했다. 엔티티를 그대로 반환하므로 매우 안좋은 방법이다. 순환조회를 막기위해 Entity에 @JsonIgnore를 넣어서 막아야 한다. 따라서 Entity 수정이 필연적으로 발생된다. V2 - 엔티티 조회해서 DTO로 변환 후 반환 Entity를 바로 반환하지 않게 변환했지만 객체 내 LAZY 객체에 대해 접근하면서 즉시 로딩이 되면서 N + 1문제가 발생했다. 또한, LAZY 객체 내 1 : N 객체가 존재해서 1 + N번 쿼리 (LAZY 객체) + N번 쿼리 (Many 객체) +..
주문목록 가져오기 V4 QueryDto를 사용해서 바로 조회하는 방법 쿼리용 OrderQueryDto 클래스를 선언해서 해당 타입으로 받는 api @GetMapping("/api/v4/orders") public List orderV4() { return orderQueryRepository.findOrderQueryDtos(); } OrderQueryDto @Data public class OrderQueryDto { @JsonIgnore private Long orderId; private String name; private LocalDateTime localDateTime; private OrderStatus orderStatus; private Address address; private Lis..
컬렉션 관계인 일대다 관계를 조회하는 경우에 대해 알아본다. 아래와 같은 Order객체가 있을 때 모든 주문 목록과 각 주문에 포함된 주문 상품목록을 함께 가져온다고 생각해보자. Order 내 OrderItem은 리스트로 존재하므로 1 : N 관계를 가진다. @Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") pr..
One to One, Many to One 관계를 갖는 객체를 조회할 때 어떻게 조회해서 반환하도록 api를 구현해야하는지 알아본다. Order (주문 객체) @Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", casc..
API 구현 회원 생성 API 구현 회원 객체 생성 api POST ("api/v2/members") { "name": "최똥꼬", "email": "dnstlr2933@naver.com7", "address": { "zipcode" : "139xx", "streetAdr": "안양시 동안구 동편로 xxx", "detailAdr": "xxx-xxx" } } Member 객체 @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; private String email; @Embedded private Address address..
웹 애플리케이션 개발 시 서비스를 위해서 api를 이용한 통신을 하게 되므로 이를 구현해보겠다. 이때, DB 및 repository에서 사용되는 Entity가 아닌 데이터 전달용도로 DTO객체를 따로 생성해서 사용해야 되는데 이에 대해 알아보겠다. DTO : Data Transfer Object 회원 생성 API 회원 생성 api POST ("api/v2/members") { "name": "최똥꼬", "email": "dnstlr2999@naver.com7", "address": { "zipcode" : "13928", "streetAdr": "안양시 동안구 99로 999", "detailAdr": "999-999" } } Member 객체 @Entity @Getter @Setter public cla..
환경 : springboot + thymeleaf + h2(DB) 목적 회원가입시 주소를 입력해야하는데 이를 위해 카카오에서 제공하는 도로명 주소 API를 사용해보려 한다. 카카오 도로명 주소 API https://postcode.map.daum.net/guide Daum 우편번호 서비스 우편번호 검색과 도로명 주소 입력 기능을 너무 간단하게 적용할 수 있는 방법. Daum 우편번호 서비스를 이용해보세요. 어느 사이트에서나 무료로 제약없이 사용 가능하답니다. postcode.map.daum.net 기본적으로 주석까지 자세하게 달려서 제공되고 있으므로 천천히 읽어보자 필자는 "사용자가 선택한 값 이용"을 선택해서 사용해 보겠다 기본 Address객체 클래스 @Embeddable @Getter public ..
- Total
- Today
- Yesterday