본문 바로가기

프레임워크/JPA9

[JAP] Querydsl 및 설정 테스트 코드 Querydsl란?스프링부트 + JPA + 스프링 DATA JPA 합쳐서 사용하지만 복잡한 쿼리, 동적 쿼리를 구현할때 문제가 됨이를 해결하는게 Querydsl입니다. 또 다른 장점으로는 Java 코드로 Query를 작성하기 때문에 문법 오류를 컴파일 시점에 딱 잡아줍니다.또한 Querydsl은 파라미터 바인딩 자동 처리를 해줍니다. Querydsl 테스트 코드package study.querydsl;import com.querydsl.jpa.impl.JPAQueryFactory;import jakarta.persistence.EntityManager;import org.assertj.core.api.Assertions;import org.junit.jupiter.api.Test;import org.sp.. 2024. 11. 16.
[JPA] Hint & Lock 쿼리 힌트(JPA Hint) 사용하는 이유 영속성 컨텍스트가 Dirty Checking(변경 감지)을 해서 트랜잭션이 끝나는 시점에 자동으로 엔티티를 업데이트 하는데 이럴 경우 의도하지 않아도 업데이트 되는 걸 방지 하기 위해서 사용한다. 쿼리 힌트 사용 @QueryHints(value = @QueryHint(name = "org.hibernate.readOnly", value = "true")) Member findReadOnlyByUsername(String username); 쿼리 힌트 사용 확인 @Test public void queryHint() throws Exception { //given memberRepository.save(new Member("member1", 10)); em.flus.. 2024. 2. 23.
[JPA] Entity Graph Entity Graph 쿼리 메서드마다 연관 관계의 fetch모드를 유연하게 설정할 수 있는 기능을 제공해준다. 끝이 One으로 끝나는 연관관계는 기본값이 EAGER모드이고, 끝이 Many로 끝나는 연관관계는 기본값이 LAZY이다.(임의로 모드를 바꿀 수 있다.) @Entity @Table(name = "account") @Getter @NoArgsConstructor public class Account { @ManyToMany @JoinTable( // JoinTable은 테이블과 테이블 사이에 별도의 조인 테이블을 만들어 양 테이블간의 연관관계를 설정 하는 방법 name = "account_authority", joinColumns = {@JoinColumn(name = "account_id", r.. 2023. 10. 24.
[JPA] 임베디드 타입 임베디드 타입 임베디드 타입 사용법 @Embeddable: 값 타입을 정의하는 곳에 표시 @Embedded: 값 타입을 사용하는 곳에 표시 기본 생성자 필수 임베디드를 사용하면 재사용이 가능하고 Period.isWork()처럼 해당 값 타입만 사용하는 의미 있는 메소 드를 만들 수 있습니다. @AttributeOverride: 속성 재정의 한 엔티티에서 같은 값 타입을 사용하려면 @AttributeOverrides, @AttributeOverride를 사용해서 컬러 명 속성을 재정의 합니다. 2023. 5. 1.