본문 바로가기

Jpa38

[Querydsl 1편] querydsl 상속, 구현 없이 환경 세팅 source 는 Github 에 있습니다. 목차는 Querydsl 목차 에 있습니다. [Querydsl 1편] querydsl 상속, 구현 없이 환경 세팅 spring boot, querydsl 상속, 구현 없이 환경 세팅 기존에 querydsl 을 구현해줄려면 interface 를 만들어야하고 구현체를 만들어야 했습니다. querydsl 을 사용할 때 상속, 구현없이 환경 세팅하는 법에 대해서 정리했습니다. public interface MemberRepositoryCustom { void test(); } public class MemberRepositoryImpl implements MemberRepositoryCustom { xxx xxx xxx } source 아래와 같이 소스를 작성한다면 ge.. 2022. 1. 3.
[Querydsl 2편] querydsl 성능 관련 정리 source 는 Github 에 있습니다. 목차는 Querydsl 목차 에 있습니다. [Querydsl 2편] querydsl 성능 관련 정리 Querydsl Tip implement, extends implement, extends 를 사용해서 querydsl 사용하지 않는 것이 좋습니다. JpaQueryFactory 만 빈으로 선언해주면 implement, extends 를 사용하지 않아도 됩니다. 동적 쿼리 BooleanExpression 아래처럼 명시적으로 만드는게 좋습니다. return queryFactory .selectFrom(xxx) .where(eqAge(age), eqTel(tel)) .fetch(); private BooleanExpression eqAge(String age) { x.. 2021. 12. 14.
jpa merge vs persist 동작방식 및 목적 정리 jpa merge vs persist 동작방식 및 목적 정리 merge, persist 동작방식 및 목적을 정리했습니다. merge merge 는 오직 분리된(detached) 엔티티에만 필요합니다. 예를 들면 다음과 같습니다. 아래와 같이 test 라는 entity 를 persist 를 통해 영속성 상태로 만들었습니다. 그런 뒤 entityManager 를 close 해서 test 가 준영속 상태가 됐다고 가정하겠습니다. 이런 경우 준영속 상태인 것의 상태를 변경해서 database 에 반영하고 싶습니다. 이럴 때 merge 를 사용해야 합니다. Test test = new Test(); test.setName("abc"); entityManager.persist(test); entityManager... 2021. 6. 25.
Jpa OSIV (Open Session In View) source 는 Github 에 있습니다. 개념 Open Session In View 보통 DB 트랜잭션이 시작될 때, 영속성 컨텍스트에서 데이터베이스 Connection 을 가져옵니다. 그러면 언제 Connection 을 반환할까요? 아래 예시를 통해 보면 @Transactional 이 시작할 때, setAutoCommit(false) 가 명령어가 수행됩니다. 그 이후 영속성 컨텍스트는 Connection 을 가져오고, 쿼리를 수행하고 @Transactional 선언된 메소드가 종료됩니다. @Transactional 메소드가 종료된 후, connection 을 반환하고 영속성 컨텍스트는 종료됩니다. 하지만 OSIV 가 켜져있으면 @Transactional 메소드가 종료된 이후에도 영속성 컨텍스트가 종료.. 2021. 4. 22.