본문 바로가기
반응형

DTO3

[JPA] 지연로딩과 조회 성능 최적화 1 - xToOne # 아래 상황에서 최적화 방법을 알아보자 * ManyToOne, OneToOne * 지연로딩 => xToOne 연관관계의 대상을 프록시 객체로 가져옴 ★Entity를 그대로 반환하는 것은 좋지 않음! # 컨트롤러에서 xToOne 관계가 있는 entity 반환하는 방법 1) 컨트롤러에서 entity를 그대로 반환 시 아래와 같은 오류 발생! com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to .. 2022. 4. 18.
[클린 아키텍처] 20장 업무규칙 / 엔티티 객체를 가리키는 참조를 요청/응답 데이터 구조에 포함하지말자! JPA를 처음 사용했을 때 컨트롤러의 ResponseBody 응답 모델에 엔티티를 포함하는 멍청이바보똥깨짓을 한적이 있었..다..ㅎ.ㅎ.. 연관관계가 있는 엔티티여서 순환참조가 계속 일어났고... 그렇게 사용하면 안된다는 것을 알게 되었다 (현존하는 JPA 최고 존엄 김영한 강사님 강의에도 나옴) 클린 아키텍처에도 엔티티와 관련한 내용이 나와서 기록으로 남겨본다 엔티티 컴퓨터 시스템 내부의 객체 핵심 업무 데이터를 기반으로 동작하는 일련의 조그만 핵심 업무 규칙을 구체화 엔티티 객체는 핵심 업무 데이터를 직접 포함하거나 핵심 업무 데이터에 매우 쉽게 접근 엔티티의 인터페이스는 핵심 업무 데이터를 기반으로 동작하는 핵심 업무 규칙을 구현한 함수들로 구성 => 핵심 업무 규칙!! 요청/응답 모델 입력 데이터.. 2022. 2. 1.
[JPA] Querydsl 조회 결과 DTO에 담는 법 / 예문 1. Projections.bean(dto.class, field1, field2) DTO setter 이용 List dtos = query.select( Projections.bean(UserDTO.class, user.firstName, user.lastName)).fetch(); 2. Projections.fields(dto.class, field1, field2) DTO setter 대신 필드를 직접 사용하는 경우, setter 없어도 됨 List dtos = query.select( Projections.fields(UserDTO.class, user.firstName, user.lastName)).fetch(); 3. Projections.constructor(dto.class, field1.. 2022. 1. 20.