jpa 2

JPA - @EntitiyGraph, @Transactional Database - NoSession 해결

연관관계가 지연(Lazy)로 되어있을 경우에 만약 하위 엔티티에 접근할 경우 @Transcational로 묶여있지 않는 한 DB연결이 끊기며 No session 에러가 나게 될 것이다. 이런 경우 join하여 값을 가지고 올때 @EntityGraph를 사용할 수 있다. 이렇게 있을 경우에 일반적으로 상위 엔티티를 불러와 하위 엔티티에 접근할 경우 코드를 보자 PK가 2인 값을 불러와서 하위 엔티티를 접근할 경우 org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role:.....could not initialize proxy - no Session 이러한 에러가 나게된다. DB에 연결이 끊어진 상태에..

Spring 2022.09.15

JPA - Querydsl 정의(간단한 검색기능)

이 내용은 자바웹 개발 워크북을 학습후 정리한 내용입니다. 기본적으로 JPA나 JPQL을 이용하면 SQL을 작성하거나 쿼리를 처리하는 소스 부분이 줄어들기 때문에 무척 편리하다. 하지만 애노테이션을 이용해서 지정하기 때문에 고정된 형태라는 단점이 있다. 그리고 복합적인 조건이 걸릴 수 있는데 이런 상황에서 매우 까다롭기 때문에 Querydsl을 사용하는 것이 좋은 경우가 많다. Querydsl 사용을 위한설정 Q 도메인 클래스를 만들기 위한 설정이다. Querydsl은 Entitiy가 아닌 Q 도메인 클래스를 사용한다. 기존에 사용중이던 Repository와 Querydsl 연동하는 3가지 단계 Querydsl을 사용할 인터페이스를 먼저 구현한다. 위에서 지정한 인터페이스 이름 +Impl 형태로 클래스를..

Spring 2022.09.03