영속성 https://tlskals1.tistory.com/43 영속성 (Persistence) 영속성 (Persistence) 개발을 공부하다보면 영속성이라는 단어를 자주 접할 수 있다. 예를 들어 JPA 영속성 컨텍스트가 있다. 이러한 영속성이 뭔지 쉽게 말하자면 다음과 같다. 데이터를 생성한 프 tlskals1.tistory.com 지난번에 영속성에 대해 포스팅했었는데, 다시 설명하자면 데이터를 생성한 프로그램이 종료되어도 데이터가 삭제되지 않고 보존되는 것을 영속성이라고 한다. 영속성 컨텍스트에 대해 이해하기 위해서는 먼저 엔티티의 생명주기에 대한 이해가 필요하다. 엔티티의 생명주기 엔티티는 크게 4가지 상태로 구분할 수 있다. 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없..
JPA (Java Persitent API) JPA란 자바의 ORM (Object Relational Mapping) 기술에 대한 API 표준 명세를 의미한다. 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스를 모아놓은 것으로 특정 기능을 하는 라이브러리가 아니다. Hibernate JPA는 말그대로 인터페이스이기 때문에 구현체가 필요하고, Hibernate는 그 구현체 중 하나이다. 이 외에도 EclipseLink, DataNucleus 등이 있지만 가장 범용적으로 다양한 기능을 제공하기 때문에 가장 많이 사용된다. Hibernate를 사용하면 SQL문을 직접 작성하지 않아도 직관적 코드를 통하여 데이터를 조작할 수 있다. Hibernate의 장단점 장점 생산성이 좋다. -..

특정 단어로 시작하는 Data 조회 like '%TEXT' 특정 단어로 끝나는 Data 조회 like 'TEXT%' 특정 단어가 포함된 Data 조회 like '%TEXT%' Raw Query 작성
JPA N+1 1번의 쿼리를 날렸을 때, 의도하지 않은 N번의 쿼리가 추가적으로 실행되는 것 해당 오류는 1:N 또는 N:1 관계를 가진 엔티티를 조회할 때 발생하며, JPA Fetch 전략이 EAGER(즉시 로딩) 전략으로 데이터를 조회하는 경우와 JPA Fetch 전략이 LAZY(지연 로딩) 전략으로 데이터를 가져온 이후 연관 관계인 하위 엔티티를 다시 조회하는 경우 발생한다. 발생이유는 다음과 같다. - JPA Repository로 find 시, 실행하는 첫 쿼리에서 하위 엔티티까지 한 번에 가져오지 않고, 하위 엔티티를 사용할 때 추가로 조회하기 때문에 - JPQL은 기본적으로 글로벌 Fecth 전략을 무시하고 JPQL만 가지고 SQL을 생성하기 때문에 N+1 해결 방법 1. Fetch Join ..