728x90 반응형 JPA3 [JPA] JPQL과 방언(Dialect) JPA는 복잡한 검색 조건을 사용해서 엔티티 객체를 조회할 수 있는 다양한 쿼리 기술을 지원함ORM을 사용하면 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 검색도 엔티티 객체를 대상으로 하는 방법이 필요 JPQL(Java Persistence Query Language)테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리SQL을 추상화해서 특정 데이터베이스에 의존하지 않음JPA는 JPQL을 분석하여 적절한 SQL을 만들어 데이터베이스를 조회→ 조회한 결과로 엔티티 객체를 생성해서 반환 문제는 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다르다는 것 JPQL 사용 시 데이터베이스 방언(Dialect)를 지정해서 사용→ 선택한 방언에 따라 해당 데이터베이스에 맞춘 적절한 SQL.. 2024. 5. 27. [JPA] Fetch type, N+1 문제 Fetch typeEntity를 영속성 컨텍스트에서 사용할 때 연관 Entity 설정 1. EAGER(즉시 로딩)특정 엔티티를 조회할 때 연관된 모든 엔티티를 같이 조회연관 관계 Entity를 영속성 컨테이너로 전부 즉시 가져옴 2. LAZY(지연 로딩)엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연 LAZY가 보편적 권장 사항 Fetch type은 default로 ~ToMany에서는 LAZY, ~ToOne에서는 EAGER로 지정되어 있음(그래도 명시해주는 게 좋음) N+1 문제란? 연관 관계를 가진 엔티티를 조회할 때 한 번의 쿼리로 연관된 엔티티들을 함께 가져오지 않고, 각 엔티티를 접근할 때마다 추가적인 쿼리가 발생하는 현상 → 예상보다 많은 수의 쿼리가 데이터베이스에 전송되어 성능 저.. 2024. 5. 23. [JPA] 영속성 전이 : CASCADE 영속성 전이 : 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용영속 상태 : 영속성 컨텍스트에 저장된 상태→ JPA에서 엔티티를 저장할 때 연관된 모든 엔티티는 영속 상태여야 함→ 영속성 전이를 사용해서 부모만 영속 상태로 만들면 연관된 자식까지 한 번에 영속 상태로 만들 수 있음 영속성 컨텍스트 : 엔티티를 연구적으로 저장해주는 환경 → 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할 → 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리 JPA Cascade란?엔티티의 생명 주기 상태 변화가 연관된 엔티티에 자동으로 전파되게 하는 옵션즉, 한 엔티티를 저장, 수정.. 2024. 5. 23. 이전 1 다음 728x90 반응형