
spring boot app을 실행하면 다음과 같은 WARN 경고가 뜨게 된다. 2021-07-30 15:41:37.897 WARN 11366 ---[ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 해석해보면 "open in view가 dafault로 사용가능하게 되어있으므로 view rendering시 db 쿼리가 수행될 ..
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