본문 바로가기

개념 공부/Spring & ORM8

[ 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.
[JPA 개념] 연관 관계 매핑 단방향 연관 관계 매핑MEMBER라는 테이블과 TEAM이라는 테이블이 있다고 하겠습니다.한 멤버는 한 팀에 속할 수 있고, 한 팀에는 여러명의 멤버가 속해있습니다.따라서 MEMBER와 TEAM은 N:1 관계입니다.Member.javaimport jakarta.persistence.Column;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.Id;import lombok.Getter;import lombok.Setter;@Getter@Setter@Entitypublic class Member { @Id @GeneratedValue @Column(name = "MEMB.. 2024. 6. 6.