컬렉션 조회 최적화@Dataprivate class OrderDto { //주문 DTO private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; private List orderItems;}DTO 설계 시 DTO 내부에도 엔티티가 존재하면 안된다.DTO 내부에 존재하는 엔티티 조차도 모두 필요한 데이터만을 가지고 DTO 형태로 만들어야 한다. 일대다 관계에서 페치 조인해서 조회하는 경우 ex) Member(N) - Team(1) 연관관계, Team1(Member1, Member2), Team2(Member3, Member..
지연 로딩과 조회 성능 최적화public class Member { ... @ManyToOne(fetch = LAZY) @JoinColumn(name = "team_id") private List team = new ArrayList();}public class Team { ... @JsonIgnore @OneToMany(mappedBy = team) private Member member;}엔티티를 외부에 직접 노출할 때, 양방향 연관관계가 걸린 곳은 Json 타입으로 데이터를 가져올 때 한 쪽 연관관계에 반드시 @JsonIgnore를 사용해야 한다.그렇지 않으면 Json 생성 시 서로 계속 참조하게 되면서 무한 루프에 빠지게 된다.엔티티를 외부에 직접 노출시키지 않는 것이 가장 좋다.ex) M..
API 개발API tool - postman API 개발 시 템플릿 엔진(화면) 사용하는 Controller와 API를 사용하는 Controller를 패키지를 통해 분리하는 것이 좋다.공통 처리를 할 때 패키지 단위로 많이 하는데 화면과 API는 공통 처리해야 할 부분이 많이 다르기 때문 @ResponseBody : 자바 객체를 json 기반의 HTTP Body로 변환한다.주로 데이터 자체를 바로 Json을 XML로 보낼 때 사용한다.@RequestBody : json 기반의 HTTP Body를 자바 객체로 변환한다.@RestController : @Controller + @ResponseBody 어노테이션을 합친 어노테이션이다.@Data : @Getter, @Setter, @ToString, @Equa..