본문 바로가기

분류 전체보기89

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.
6. 고급 매핑 1. 상속관계 매핑 패러다임의 불일치 객체 에는 상속관계가 존재 RDB 에는 상속관계 x 상속관계 매핑 객체의 상속을 DB의 슈퍼타입, 서브타입 관계 모델링을 사용하여 매핑 3가지 전략을 사용할 수 있다. 1.1. 조인전략 특징 [INSERT] ALBUM 을 추가한다고 했을 때 ITEM, ALBUM 각 각 한번씩, 하나를 저장할 때 두개의 insert가 발생한다. [SELECT] ALBUM 을 조회한다고 했을 때 ITEM과 ALBUM 테이블을 JOIN 하여 가져와야한다. 어떤거와 JOIN을 할 지 구분해야 하기 때문에 ITEM 에 DTYPE 컬럼이 추가된다. 가장 정규화된 방식 1.2. 단일테이블 전략 특징 하나의 테이블이 모두 넣은 뒤, DTYPE 컬럼을 기반으로 조인을 하여 어떤 데이터가 저장되어있는.. 2020. 12. 29.