개념 공부35 [ Java / querydsl ] Queryds에서의 페이지네이션 간단한 페이지네이션 - fetchResults()offset() 메서드와 limit() 메서드를 통해서 querydsl로 페이지네이션을 할 수 있다.offset은 몇번째 페이지를 가져올지, limit은 한 페이지에 몇개의 데이터를 가져올지를 의미한다.package study.querydsl.repository;import com.querydsl.core.types.dsl.BooleanExpression;import com.querydsl.jpa.impl.JPAQueryFactory;import jakarta.persistence.EntityManager;import org.springframework.data.domain.Pageable;import org.springframework.util.Strin.. 2025. 3. 29. [Spring / Jpa / querydsl ] 커스텀 리포지토리 구조 스프링 데이터 JPA와 querydslCustom Repository를 사용하기Spring Data Jpa와 Querydsl을 활용한 custom repository(사용자 정의 리포지토리)를 사용하려면 아래와 같은 상속 구조로 구현해주면 된다.위 사진보다 더 직관적으로 이해가 잘가는 사진이 있어서 가져왔다.사진 출처: https://wildeveloperetrain.tistory.com/322MemberRepositoryCustom (인터페이스)사용자 정의 메서드를 정의한다.package study.querydsl.repository;import org.springframework.data.jpa.repository.JpaRepository;import study.querydsl.entity.Membe.. 2025. 3. 23. [Java / querydsl] querydsl로 동적쿼리를 처리하기 동적 쿼리를 해결하는 2가지 방법BooleanBuilderWhere 다중 파라미터 사용 (1) BooleanBuilder 방식BooleanBuilder를 만들어서 querydsl의 where절에 넣어주기만 하면된다.BooleanBuilder를 만들 때, 한 조건이 null이면 해당 조건을 빼도록 구현한다.따라서 usernameParam을 null로 두었을 때는, JPQL의 where절에 age만 존재하고, @Test public void dynamicQuery_boolean_builder() { String usernameParam = null; Integer ageParam = 10; List result = searchMember1(usernamePar.. 2025. 3. 18. [Java / querydsl] 여러 Projection 방법 프로젝션 기본프로젝션 대상이 하나인 경우 // 프로젝션 대상이 하나인 경우 @DisplayName("모든 회원의 이름 조회") @Test void simpleProjection() { List result = queryFactory .select(member.username) .from(member) .fetch(); for (String s : result) { System.out.println("result = " + s); } }프로젝션 대상이 여러 개인 경우 @DisplayName("모든 회원의 이름과 나이를 반환") @Te.. 2025. 3. 16. [Java / Spring] @Transational과 ChainedTransactionManager 다른 두개 이상의 DB에 write를 해야해서, 여러개의 트랜잭션이 한꺼번에 커밋 또는 롤백이 되어야하는 상황이 있을 수 있다.오늘은 그때 활용할 수 있는 ChainedTransactionalManager에 대해 알아보려한다. (현재는 deprecated되었지만, 아직도 쓰이는 곳이 있기에,,) @TransactionalChecked Exception예외가 발생해도 트랜잭션이 Rollback 처리하지 않는다. (그대로 커밋됨)따라서 개발자가 checked exception을 catch해서 unchecked를 발생시키도록 하거나, catch 부분에서 명시적으로 롤백되도록 처리해줘야 한다.Unchecked Exception예외가 발생하면 @Transactional로 묶인 메서드가 롤백처리된다. Transa.. 2025. 3. 12. [Test Code / Java] Spring 프로젝트에서 Persistence Layer의 테스트 Persistence Layer의 테스트Persistence Layer는 데이터에 액세스하는 영역이다.데이터베이스에 액세스하는 로직만 갖고 있기 때문에, 단위 테스트의 성격을 많이 띠고 있다.Persistence Layer를 테스트하는 이유는 내가 작성한 코드로 인해 쿼리가 제대로 나갈 것인가를 검증하기 위함이다. @SpringBootTest, @DataJpaTest@SpringBootTest: 스프링에서 통합 테스트를 제공하는 어노테이션. 이 어노테이션을 달고 테스트하면 스프링 서버를 띄워서 테스트할 수 있다.@DataJpaTest: 얘도 스프링 서버를 띄워서 테스트하는 어노테이션이다. 근데 이 어노테이션은 스프링부트 테스트보다는 가볍다. JPA 관련된 빈들만 띄워서 주입을 해주기 때문이다. Persi.. 2024. 12. 29. 이전 1 2 3 4 ··· 6 다음