본문 바로가기

강의 정리/자바 ORM 표준 JPA10

10. 중급 문법 1. 경로표현식 특징 상태 필드 단순히 값을 저장하기 위한 필드 ex) m.username 연관 필드 단일 값 연관 필드 @XToOne 묵시적 조인이 발생 (inner join) 컬랙션 값 연관 필드 @XToMany 묵시적 조인이 발생 묵시적 조인을 쓰지말고, 명시적 조인을 만들어서 써라. 2. 페치 조인 JPQL 성능 최적화를 위해 제공되는 기능이다. 연관된 엔티티나 컬렉션을 SQL 한번에 함께 조회하는 기능이다. ex) select m from Member m join fetch m.team 컬렉션 패치 조인 1대 다 조인인 경우에는 데이터가 뻥튀기 될 수 있다. distinct로 제거할 수 있다. JQPL distinct는 중복된 엔티티를 제거해준다. (sql distinct 와는 조금 차이가 있음.. 2021. 1. 2.
9. 기본 문법 1. JPQL 엔티티 객체 대상으로 하는 객체지향 쿼리 언어다. 특정 SQL에 의존하지 않는다. TypeQuery : 반환 타입이 명확할 때 사용 TypedQuery typedQuery = em.createQuery("select m from Member m", Member.class); Query : 반환 타입이 명확하지 않을 때 사용 Query query = em.createQuery("select m.username, m.age from Member m"); 결과 조회 Collection 인 경우, getResultList(); 결과가 없으면 빈 리스트 반환 (NPE 발생하지 않음) List members = em.createQuery("select m from Member m", Member.cl.. 2021. 1. 2.
8. 값 타입 1. 기본값 타입 기본 타입 : int, double 래퍼 클래스 : Integer, Long String 2. 임베디드 타입 (복합 값 타입) 새로 값 타입을 만든다. ex) city, street, zipcode => Address 라는 값타입으로 만드는 것. as-is to-be Embeddable Period Embeddable Address 새로 정의한 값 타입에는 @Embeddable 사용할 곳에는 @Embedded Equals and hashcode 추가해주는게 좋다. 중복된다면? Address homeAddress Address workAddress 를 같이 사용하고싶다면? @Embedded private Address homeAddress; @Embedded @AttributeOverri.. 2021. 1. 1.
7. 프록시와 연관관계 관리 1. 프록시 기초 em.find() vs em.getReference() em.find() : 실제 엔티티 객체를 조회한다. em.getReference() : 가짜(프록시) 엔티티를 조회한다. (아직 쿼리가 나가지 않는다.) 실제 필요한 경우에 쿼리가 나간다. em.getReference() 0. member = em.getReference(Member.class, id) 1. member.getName() 1.1 프록시 객체의 target이 null 이다. 2. 영속성 컨텍스트에 초기화 요청을 한다. 3. 영속성 컨텍스트는 DB 에서 해당 객체를 조회한다. 4. Entity를 실제로 생성한다. 5. 프록시는 target.getName() 을 호출한다. 프록시 특징 (em.getReference()) .. 2021. 1. 1.