본문 바로가기

JPA13

[QueryDSL] QueryDSL 기본문법 QueryDSL 기본문법 기본적인 조회 Member findMember = queryFactory .select(member) .from(member) .where(member.username.eq("member1")) .fetchOne(); QueryDSL을 이용한 기본적인 where절을 이용한 조회이다. QMember와 같이 QType 클래스를 static import하여 사용하면 간결한 코드를 구성할 수 있다. 별칭을 다르게 두어야 한다면 새로 선언하자. 검색조건 Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.age.between(10, 30))) .fetchOne(.. 2022. 5. 11.
[QueryDSL] QueryDSL 시작하기 QueryDSL 시작하기 JPA와 Spring Data Jpa를 사용하면서 동적인 쿼리를 더 잘 사용하기 위해 QueryDSL을 배우기로 했다. JPQL을 사용하는 것과 다르게 QueryDSL을 사용하면 몇가지 이점이 있다. 쿼리를 문자가 아닌 코드로 작성하기 때문에 compile시점에 에러를 잡을 수 있다. 쉽고 간결하다. 형태가 쿼리와 비슷하다. 쿼리(데이터)를 조회하는 데 기능이 특화되어 있다. 프로젝트 설정하기 build.gradle buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'org.springframework.boot' version '2.6.7' id 'io.spring.dependency-management' versio.. 2022. 5. 10.
[JPA] UniqueConstraint와 Embedded field UniqueConstraint와 Embedded field JPA를 이용해 Entity 구성 중 Embedded로 구성된 필드와 함께 Unique 제약조건을 사용해야 하는 상황이 생겼다. 문제 발생 2022-05-07 15:03:12.463 ERROR 9907 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Unable to create unique key constraint (work_date, staff_id) on table work: database column 'work_date' not found. Make sure that you use the.. 2022. 5. 7.
[JPA]영속성 전이 CASCADE 영속성 전이 CASCADE JPA를 사용하면서 CASCADE 옵션은 repository의 save, delete 메서드를 한번이라도 덜 쓰게 해주기에 최대한 활용할 수 있게 노력하는 편이다. 매번 책으로 확인하기보다 한번 제대로 정리하려 한다. CASCADE란? 영속성 전이(CASCADE): 특정 엔티티를 영속상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때에 사용하는 기능 CascadeType으로 ALL, PERSIST, MERGE, REMOVE, REFRESH, DETACH가 존재한다. ALL: 모두 적용 PERSIST: 영속 MERGE: 병합 REMOVE: 삭제 REFRESH: REFRESH DETACH: DETACH 주로 @OneToXXX연관관계에 사용한다. @OneToXXX(Ca.. 2022. 4. 21.