From 4e9ead35d749488d386fc63723d67b282bc7b63c Mon Sep 17 00:00:00 2001 From: kim Date: Tue, 26 Jan 2021 19:54:18 +0900 Subject: [PATCH] jpashop : get data api v1 (entity) --- jpashop/build.gradle | 1 + .../example/jpashop/JpashopApplication.java | 7 ++++ .../jpashop/api/OrderSimpleApiController.java | 33 +++++++++++++++++++ .../com/example/jpashop/domain/Delivery.java | 2 ++ .../com/example/jpashop/domain/Member.java | 2 ++ .../com/example/jpashop/domain/OrderItem.java | 2 ++ 6 files changed, 47 insertions(+) create mode 100644 jpashop/src/main/java/com/example/jpashop/api/OrderSimpleApiController.java diff --git a/jpashop/build.gradle b/jpashop/build.gradle index 9b71e9e9..757f527c 100644 --- a/jpashop/build.gradle +++ b/jpashop/build.gradle @@ -24,6 +24,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' + implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6' diff --git a/jpashop/src/main/java/com/example/jpashop/JpashopApplication.java b/jpashop/src/main/java/com/example/jpashop/JpashopApplication.java index 61e9dbda..8e10bd16 100644 --- a/jpashop/src/main/java/com/example/jpashop/JpashopApplication.java +++ b/jpashop/src/main/java/com/example/jpashop/JpashopApplication.java @@ -1,7 +1,9 @@ package com.example.jpashop; +import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; @SpringBootApplication public class JpashopApplication { @@ -9,4 +11,9 @@ public class JpashopApplication { public static void main(String[] args) { SpringApplication.run(JpashopApplication.class, args); } + @Bean + Hibernate5Module hibernate5Module() { + return new Hibernate5Module(); +// .configure(Hibernate5Module.Feature.FORCE_LAZY_LOADING, true); + } } diff --git a/jpashop/src/main/java/com/example/jpashop/api/OrderSimpleApiController.java b/jpashop/src/main/java/com/example/jpashop/api/OrderSimpleApiController.java new file mode 100644 index 00000000..8ac904bc --- /dev/null +++ b/jpashop/src/main/java/com/example/jpashop/api/OrderSimpleApiController.java @@ -0,0 +1,33 @@ +package com.example.jpashop.api; + +import com.example.jpashop.domain.Order; +import com.example.jpashop.repository.OrderRepository; +import com.example.jpashop.repository.OrderSearch; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * xToOne (ManyToOne, OneToOne) + * Order + * Order -> Member + * Order -> Delivery + */ +@RestController +@RequiredArgsConstructor +public class OrderSimpleApiController { + + private final OrderRepository orderRepository; + + @GetMapping("/api/v1/simple-orders") + public List ordersV1() { + List all = orderRepository.findAllByString(new OrderSearch()); + all.forEach(order -> { + order.getMember().getName(); // Lazy 강제 초기화 + order.getDelivery().getAddress(); // Lazy 강제 초기화 + }); + return all; + } +} diff --git a/jpashop/src/main/java/com/example/jpashop/domain/Delivery.java b/jpashop/src/main/java/com/example/jpashop/domain/Delivery.java index a5be7f20..f9e399bc 100644 --- a/jpashop/src/main/java/com/example/jpashop/domain/Delivery.java +++ b/jpashop/src/main/java/com/example/jpashop/domain/Delivery.java @@ -1,5 +1,6 @@ package com.example.jpashop.domain; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; @@ -13,6 +14,7 @@ public class Delivery { @Column(name = "delivery_id") private Long id; + @JsonIgnore @OneToOne(mappedBy = "delivery", fetch = FetchType.LAZY) private Order order; diff --git a/jpashop/src/main/java/com/example/jpashop/domain/Member.java b/jpashop/src/main/java/com/example/jpashop/domain/Member.java index 7776afe1..3fe705d2 100644 --- a/jpashop/src/main/java/com/example/jpashop/domain/Member.java +++ b/jpashop/src/main/java/com/example/jpashop/domain/Member.java @@ -1,5 +1,6 @@ package com.example.jpashop.domain; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.*; import javax.persistence.*; @@ -22,6 +23,7 @@ public class Member { @Embedded private Address address; + @JsonIgnore @OneToMany(mappedBy = "member") private List order = new ArrayList<>(); } diff --git a/jpashop/src/main/java/com/example/jpashop/domain/OrderItem.java b/jpashop/src/main/java/com/example/jpashop/domain/OrderItem.java index 7d40e6bd..e810c6be 100644 --- a/jpashop/src/main/java/com/example/jpashop/domain/OrderItem.java +++ b/jpashop/src/main/java/com/example/jpashop/domain/OrderItem.java @@ -1,6 +1,7 @@ package com.example.jpashop.domain; import com.example.jpashop.domain.item.Item; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @@ -21,6 +22,7 @@ public class OrderItem { @JoinColumn(name = "item_id") private Item item; + @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "order_id") private Order order;