분류 전체보기590 API 만들 때 생길 수 있는 문제 (컬렉션 조회 최적화) public List findAllWithItem() { return em.createQuery( // JPA에서만의 기능으로 전체 row를 보는 것이 아닌 Order 엔티티만 봐서 중복 제거해서 보여준다. "select distinct o from Order o" + " join fetch o.member m" + " join fetch o.delivery d" + " join fetch o.orderItems oi" + " join fetch oi.item i", Order.class ).getResultList(); } 컬렉션 페치 조인을 사용하면 페이징이 불가능하다. 컬렉션 페치 조인은 1개만 사용할 수 있다. 컬렉션 조회 시 N + 1 문제 발생 해결 방법 1. 제약이 있는 fetch join .. 2022. 8. 28. API 만들 때 생길 수 있는 문제 (지연 로딩과 조회 성능 최적화) 쿼리 방식 선택 권장 순서 1. 우선 엔티티를 DTO로 변환하는 방법을 선택한다. 2. 필요시 페치 조인으로 성능을 최적화 한다. -> 대부분의 성능 이슈가 해결된다. 3. 그래도 안되면 DTO 로 직접 조회한다. 4. 그래도 안되면 JPA가 제공하는 네이티브 SQL이나 스프링 JDBC Template을 사용해서 SQL을 직접 사용한다. 1. Entity 순환참조 문제 (양방향 연관관계, 무한루프) 해결 -> 양방향 연관관계에서 한쪽은 @JsonIgnore 해야 한다. (json 응답 만들 때 관계를 끊어줘야 한다.) @JsonIgnore @OneToMany(mappedBy = "member") private List orders = new ArrayList(); 궁금증 : 그런데 이 문제는 HTTP R.. 2022. 8. 28. springboot test data.sql 넣는 방법 https://wadekang.tistory.com/39 Spring JUnit5 Sql script로 테스트 데이터 불러오기 테스트를 할 때 sql로 미리 데이터를 insert 하고 해당 데이터로 테스트를 진행하고 싶을 경우 다음과 같이 설정하면 된다. 먼저 테스트 폴더에 resources 폴더를 만들어서 applciation.yml (or properties)을.. wadekang.tistory.com springboot test data.sql 넣는 방법 2022. 8. 25. [에러해결] org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "OOOOOO" not found; SQL statement: 에러코드 : org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ORDER_ITEM" not found; SQL statement: 에러 원인 : H2 Memory database 사용하기 위하여 application.yml 설정 하였는데, database-platform 값을 아래처럼 MySQL으로 설정하여서 에러가 발생하였음. (개삽질 ㅁㅊ;;) database-platform: org.hibernate.dialect.MySQL8Dialect 에러 해결 : H2 Database이니 database-platform 값을 H2 DB에 맞게 변경 database-platform: org.hibernate.dialect.H2Dialect 2022. 8. 21. 이전 1 ··· 67 68 69 70 71 72 73 ··· 148 다음