서점 프로젝트) 카테고리에 해당하는 상품 조회문에서 N + 1 문제 발생.
·
프로젝트
QueryDsl에서 상품을 조회 할 때, 상품의 개수만큼 쿼리문이 동작하고 그거에 따라 카테고리 조회문도 상품의 개수만큼 다시 도는 문제가 발생했습니다. 한마디로 20개의 상품을 조회하면 60회의 쿼리문이 동작했습니다. 1. 문제의 queryDSL 쿼리문@Overridepublic List findByCategoryIds(Long categoryId) { QProduct product = QProduct.product; QBookCategory bookCategory = QBookCategory.bookCategory; QCategory category = QCategory.category; JPAQueryFactory queryFactory = new JPAQueryFactory(..
JPA ) JPQL DTO Mapping 및 interface Mapping 방법
·
Framework & Library/SpringDataAccess
JQPL 맵핑하기JPQL에서 DTO Mapping과 interface를 이용한 매핑 방법입니다.Interface 매핑시 주의 사항as(별칭)을 사용하여 PostMapping클래스의 필드명과 맞추는 작업이 필요합니다. 별칭이 맞지 않다면 null을 반환합니다.DTO 매핑시 주의사항데이터를 받을 생성자가 꼭 필요하고 정의해야 합니다.필드명과 맞출 필요 x, 별칭 사용할 이유 x, but 생성자 파라미터의 데이터 타입을 엔티티의 타입과 반드시 맞춰 사용해야 합니다!.//Repositorypublic interface PostRepository extends JpaRepository { //interface를 사용한 매핑 방법 @Query("select p.id as id, p.content a..
@DataJpaTest를 사용한 단위 테스트에서 @Autowired Repository의 빈이 등록되지 않는 문제 해결하기.
·
Framework & Library/SpringDataAccess
개발환경Spring Boot 3.2.3JDK 17Gradle 8.5queryDsl 5.0.0개요JPA 테스트 및 @Repository 어노테이션을 사용한 클래스의 DB 계층 단위 테스트가 목표였습니다.TestDB만을 위한 환경을 구축하고 싶었습니다.1. 문제점@ExtendWith(SpringExtension.class) @DataJpaTest @ActiveProfiles(value = "test") @AutoConfigureTestDatabase(replace = Replace.NONE) public class RepositoryTest { @Autowired MemberRepository memberRepository; @Test public void test..
JPA) 영속성 컨텍스트 공부
·
Framework & Library/SpringDataAccess
엔티티 매니저와 엔티티 매니저 팩토리 엔티티 매니저 팩토리가 요청마다 Entity Manager를 생성합니다. Spring에서는 spring이 EntityManager를 관리합니다. EntityManager는 DB Connection을 사용해서 CRUD를 처리합니다. EntityManagerFactory entityManagerFactory = new EntityManagerFactory(); EntityManager em = entityManagerFactory.createManager(); EntityTransaction tx = em.getTransation(); tx.begin(); // 트랜잭션 관련 처리 ... tx.commit() or tx.rollback(); em.close();영속성 컨..
ruu++
'jpa' 태그의 글 목록