본문 바로가기

JAVA27

인프런 JPA 서비스 최적화 방법 "김영한" -PlusUltraCode- JPQL 경로 표현식 정리JPQL(Java Persistence Query Language)은 객체 지향 쿼리 언어로, 엔티티 객체를 대상으로 쿼리를 작성할 수 있게 해줍니다. JPQL에서는 경로 표현식(Path Expression)을 사용하여 객체 그래프를 탐색할 수 있습니다. 이를 통해 엔티티 간의 연관 관계를 쉽게 조회할 수 있습니다. 경로 표현식에는 세 가지 종류가 있습니다:1. 상태 필드 (State Field)상태 필드는 단순히 값을 저장하기 위한 필드입니다. 예를 들어, m.username은 Member 엔티티의 username 필드에 접근하는 경로 표현식입니다. 상태 필드에서는 더 이상의 경로 탐색이 불가능합니다. SELECT m.username FROM Member m2. 단일 값 연관 .. 2024. 7. 25.
인프런 JPA 9화 값 타입 "김영한 강사" -PlusUltraCode- JPA의 데이터 타입 분류1. 엔티티 타입 (Entity Type)정의: @Entity로 정의하는 객체특징: 데이터가 변해도 식별자로 지속해서 추적 가능2. 값 타입 (Value Type)정의: int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체특징: 식별자가 없고 값만 있으므로 변경 시 추적 불가특이사항:자바의 기본 타입은 절대 공유되지 않음Integer 같은 래퍼 클래스나 String은 참조가 넘어가기 때문에 공유 가능3. 임베디드 타입 (Embedded Type)정의: 주소들을 모아 놓은 클래스 혹은 시간을 모아 놓은 클래스들을 의미사용법: 해당 클래스를 @Entity 클래스에 사용하려면 @Embeddable 또는 @Entity 클래스의 해당 멤버 변수에 @Em.. 2024. 7. 24.
인프런 JPA 8화 프록시와 연관관계 관리 "김영한 강사" -PlusUltraCode- 프록시(Proxy)란 무엇인가?프록시는 하이버네이트가 만든 가짜 클래스입니다. 실제 엔티티 클래스의 형태를 그대로 가지고 있으며, 이론상으로는 실제 클래스와 구분하지 않고 사용할 수 있습니다.프록시의 특징형태 동일성: 실제 클래스를 상속 받아서 만들어졌기 때문에 형태가 실제 클래스와 똑같습니다.사용의 투명성: 이론상 실제 클래스와 구분하지 않고 사용할 수 있습니다.프록시의 동작 매커니즘 Member member = em.getReference(Member.class, "id1");위 코드가 실행되면, 프록시에 의해 가짜 객체가 만들어집니다. 만약 member.getName() 메서드를 호출하면, 프록시 객체는 영속성 컨텍스트에게 초기화를 요청합니다. 그 후, 데이터베이스 조회를 통해 받은 값을 실제 엔티.. 2024. 7. 23.
인프런 JPA 10화 객체지향 쿼리 언어1 - 기본 문법 "김영한 강사" -PlusUltraCode- JPQL 소개가장 단순한 조회 방법EntityManager.find()EntityManager.find() 메서드는 단순한 조회에 적합합니다.예를 들어, 특정 ID를 가진 엔티티를 조회할 수 있습니다.하지만 더 복잡한 조건을 적용한 조회에는 한계가 있습니다.예: 나이가 18세 이상인 남자를 조회하는 등의 조건을 적용할 수 없습니다.JPQL (Java Persistence Query Language)복잡한 조건을 적용한 조회를 위해 도입되었습니다.특징: JPQL은 검색 쿼리이며, 검색 시 테이블이 아닌 엔티티 객체를 대상으로 검색해야 합니다.JPQL은 엔티티 객체를 대상으로 쿼리를 작성하는 반면, SQL은 데이터베이스 테이블을 대상으로 쿼리를 작성합니다.JPQL 예시var result = em.create.. 2024. 7. 20.