본문 바로가기
728x90
반응형

querydsl8

[SpringBoot] Layer별 테스트 코드 작성하기 (1) - JPA를 이용한 Repository 테스트 안녕하세요. J4J입니다. 이번 포스팅은 Layer별 테스트 코드 작성하는 방법 첫 번째인 JPA를 이용한 Repository 테스트하는 방법에 대해 적어보는 시간을 가져보려고 합니다. JpaRepository 테스트 JPA를 이용하는 환경에서 repository 테스트를 수행할 때 가장 대표적으로 해볼 수 있는 테스트는 JpaRepository 사용에 대한 테스트입니다. JpaRepository를 테스트하기 위해서는 jpa에서 제공해 주는 @DataJpaTest 어노테이션을 활용하면 되는데 해당 어노테이션 내부를 확인해 보면 다음과 같이 다양한 설정 값들이 들어 있는 것을 볼 수 있습니다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @.. 2024. 2. 3.
[SpringBoot] Spring Boot 3 버전 이후 gradle에 querydsl 사용 환경 설정하기 안녕하세요. J4J입니다. 이번 포스팅은 spring boot 3 버전 이후 gradle에 querydsl 사용 환경 설정하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 관련 글 [SpringBoot] JPA에서 QueryDSL 사용하기 [SpringBoot] QueryDSL Projections로 결과값 핸들링하기 들어가기에 앞서 Spring Boot의 3버전이 등장하면서 최근에 생성되는 많은 프로젝트들은 3 버전 이상의 환경들을 구성하고는 합니다. 3 버전부터는 3 버전 이전과 설정하는 방법이 달라지기도 하고, 3 버전 이상의 환경에서 설정하는 방법을 더 궁금해하실 것 같아서 querydsl 사용 환경 설정하는 방법만 따로 정리하려고 합니다. querydsl이 무엇인지에 대해 더 궁금하신 분들은.. 2024. 1. 22.
[SpringBoot] QueryDSL where절에 1=1 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 QueryDSL where절에 1=1 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. where절에 1=1 사용이 필요한 경우 QueryDSL에서 where절에 1=1 사용이 필요한 경우는 동적으로 사용되는 조건절에 대응하기 위해 주로 활용합니다. 이 부분은 QueryDSL뿐만 아니라 Native JPA나 Mybatis에서도 충분히 사용될 수 있는 요소입니다. 해당 상황을 알아보기 위해 다음과 같은 테이블 및 클래스 파일들이 있다고 가정해 보겠습니다. // table create table school ( no int primary key auto_increment, name varchar(50), address varchar(50) ) // entity.. 2023. 1. 25.
[SpringBoot] QueryDSL에서 DB Function 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 QueryDSL에서 DB Function 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서... 이번 글에서 제가 사용할 DB는 MySQL입니다. 그리고 테스트를 위한 MySQL Function을 다음과 같이 생성해뒀습니다. CREATE DEFINER=`root`@`localhost` FUNCTION `get_function_test`(p_name varchar(100), p_age int) RETURNS varchar(200) CHARSET utf8 BEGIN declare p_return_value varchar(100); select concat('이름은 ', p_name, '이고 나이는 ', p_age, '입니다.') into p_r.. 2022. 9. 29.
[SpringBoot] QueryDSL에서 상수값 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 QueryDSL에서 상수값 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 상수값 사용 방법 QueryDSL에서 상수값을 사용하기 위해서는 Expressions를 활용해주면 됩니다. 긴 말 필요 없이 다음 코드를 확인해보시면 됩니다. package com.querydsl.repository; import static com.querydsl.entity.QStudent.student; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.querydsl.core.types.Projection.. 2022. 9. 26.
[SpringBoot] QueryDSL Projections로 결과값 핸들링하기 안녕하세요. J4J입니다. 이번 포스팅은 QueryDSL Projections 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. Projections 사용 이유 제가 Projections을 사용하는 이유는 Repository 내부에서 데이터를 조회할 때 Entity 외의 값 (ex, DTO)으로 편리하게 리턴 받아 사용할 수 있도록 하기 위해서입니다. 일반적으로 Proejctions을 사용하지 않는다면 다음과 같이 select의 return값으로 Tuple을 전달받은 뒤 DTO 등으로 변환하여 리턴하는 방식도 있습니다. package com.spring.querydsl.repository; import java.util.ArrayList; import java.util.List; import or.. 2022. 7. 9.
[SpringBoot] Found shared references to a collection 에러 안녕하세요. J4J입니다. 에러 원인 JPA를 이용하여 개발하다가 다음과 유사한 에러를 마주했던 적이 있습니다. org.springframework.orm.jpa.JpaSystemException: Found shared references to a collection: com.spring.error.entity.Board.firstFileList; nested exception is org.hibernate.HibernateException: Found shared references to a collection: com.spring.error.entity.Board.firstFileList at org.springframework.orm.jpa.vendor.HibernateJpaDialect.conv.. 2022. 6. 13.
[SpringBoot] JPA에서 QueryDSL 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 JPA에서 QueryDSL 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. QueryDSL이란? QueryDSL은 자바 코드를 이용하여 데이터베이스 query를 작성할 수 있게 도와줍니다. 일반적으로 JPA를 사용하여 개발하면 JPARepository를 상속받은 인터페이스 파일을 만들어 활용하고는 합니다. 하지만 JPARepository가 가지는 한계가 있기 때문에 상황에 따라 JPQL문을 직접 작성하기도 합니다. 여기서 문제점은 JPQL을 작성을 했지만 에러가 발생될 수 있는 코드임에도 불구하고 디버깅 단계 때 확인이 불가합니다. 결국 런타임까지 넘어갔을 때 에러가 발생될 것이고 그때서야 잘못된 코드임을 확인하여 수정작업이 이루어집니다. 게다가 개인적으.. 2022. 4. 24.
728x90
반응형