본문 바로가기
728x90

jpa18

[JPA] 객체지향 쿼리 언어 - 중급 문법 1. 경로 표현식 - .(점)을 찍어 객체 그래프를 탐색하는 것 - 경로 표현식 특징 (1) 상태 필드(state field) 경로 탐색의 끝, 탐색 X (2) 단일 값 연관 경로: 묵시적 내부 조인(inner join) 발생, 탐색 O (3) 컬렉션 값 연관 연관 경로: 묵시적 내부 조인 발생, 탐색 X (4) FROM 절에서 명시적 조인을 통해 별칭을 얻으면 별칭을 통해 탐색 가능 - 명시적 조인, 묵시적 조인 (1) 명시적 조인: join 키워드 직접 사용 select m from Member m join m.team t (2)묵시적 조인: 경로 표현식에 의해 묵시적으로 SQL 조인 발생(내부 조인만 가능) select m.team from Member m - 실무 조언 (1) 가급적 묵시적 조인 .. 2022. 7. 22.
[JPA] 객체지향 쿼리 언어 - 기본 문법 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. JPQL - JPQL은 객체지향 쿼리 언어다. 따라서 테이블을 대상으로 쿼리하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다. - JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다. - JPQL은 결국 SQL로 변환된다. 2. 문법 - select m from Member as m where m.age > 18 - 엔티티와 속성은 대소문자 구문 O(Member, age) - JPQL 키워드는대소문자 구분 X(SELECT, FROM, where) - 엔티티 이름 사용, 테이블 이름이 아님(Member) - 별칭은 필수(m) (as는 생략 가능) TypeQUery, Query - TypeQuery: 반환 타입이 명확할.. 2022. 7. 21.
[JPA] 값 타입 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. JPA의 데이터 타입 분류 - 엔티티 타입 (1) @Entity로 정의하는 객체 (2) 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 나이 값을 변경해도 키는 식별자로 인식 - 값 타입 (1) int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 (2) 식별자가 없고 값만 있으므로 변경 시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 2. 값 타입 분류 - 기본값 타입 (1) 자바 기본 타입(int, double) (2) 래퍼 클래스(Integer, Long) (3) String - 임베디드 타입(embedded type, 복합 값 타입) - 컬렉션 값 .. 2022. 7. 20.
[JPA] 프록시와 연관관계 관리 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. 프록시 - Member에 프로퍼티로 Team을 가지고 있을 때 em.find로 member을 조회하면 쿼리로 member와 team을 같이 조회한다. - team은 사용하지 않을 것이고 member의 username만 사용한다면 굳이 team을 조회할 필요가 없다. - 필요할 때 조회하기 위해 프록시를 사용한다. 2. 프록시 기초 - em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 - em.getReference(): 데이터 조회를 미루는 가짜(프록시) 엔티티 객체 조회(DB로 쿼리를 날리지 않고 파라미터로 넣어준 클래스를 상속받은 가짜(프록시) 엔티티를 만들어서 프록시 객체가 영속성 컨텍스트에 들어간다.) 3. 프록시 .. 2022. 7. 19.
[JPA] 고급 매핑 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. 상속관계 매핑 - 관계형 데이터베이스는 상속 관계 X - 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 - 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 - 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 (1) 각각 테이블로 변환 -> 조인 전략 (2) 통합 테이블로 변환 -> 단일 테이블 전략 (3) 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 2. 조인 전략 - 장점 (1) 테이블 정규화 (2) 외래 키 참조 무결성 제약조건 활용가능 (3) 저장공간 효율화 - 단점 (1) 조회 시 조인을 많이 사용, 성능 저하 (2) 조회 쿼리가 복잡함 (3) 데이터 저장 시 IN.. 2022. 7. 18.
[JPA] 다양한 연관관계 매핑 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. 연관관계 매핑시 고려사항 3가지 - 다중성 - 단방향, 양방향 - 연관관계의 주인 2. 다중성 - 다대일: @ManyToOne - 일대다: @OneToMany - 일대일: @OneToOne - 다대다: @ManyToMany -> 실무에서 사용 X 3. 단방향, 양방향 - 테이블 (1) 외래키 하나로 양쪽 조인 가능 (2) 사실 방향이라는 개념이 없음 - 객체 (1) 참조용 필드가 있는 쪽으로만 참조 가능 (2) 한쪽만 참조하면 단방향 (3) 양쪽이 서로 참조하면 양방향 - 연관관계의 주인 (1) 테이블은 외래키 하나로 두 테이블이 연관관계를 맺음 (2) 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데 (3) 객체 양방향 관계는.. 2022. 7. 14.
[JPA] 연관관계 매핑 기초 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. 단방향 연관관계 - 객체를 테이블에 맞춰 모델링(연관관계가 없는 객체) - 객체를 테이블에 맞춰 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없음 (1)테이블은 외래키로 조인하여 연관된 테이블을 찾는다. (2) 객체는 참조를 사용해서 연관된 객체를 갖는다. - 객체 지향 모델링(객체 연관 관계 사용) - 객체와 테이블의 차이는 이렇게 해결 가능 // Member와 Team 클래스가 Entity 애노테이션을 붙였다고 가정 @Entity public class Member { // 다른 필드 생략 /* @Column(name="TEAM_ID") private Long teamId; 위는 객체를 테이블에 맞추어 모델링 한 것인데 협력 관.. 2022. 7. 13.
[JPA] 기본 엔티티 매핑 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. 객체와 테이블 매핑 - 객체와 테이블 매핑 : @Entity, @Table - 필드와 컬럼 매핑 : @Column - 기본 키 매핑 : @Id - 연관관계 매핑 : @ManyToOne, @JoinColumn 2. @Entity - @Entity가 붙은 클래스는 JPA가 관리 - JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 - JPA 스펙상 파라미터가 없는 public 또는 protected 기본 생성자 필수 - 기본 생성자 필수 - final 클래스, enum, interface, inner 클래스에는 사용 불가능 - DB에 저장하고 싶은 필드는 final 사용 불가 3. @Table @Entity @Table(name.. 2022. 7. 12.
[JPA] 기본 영속성 관리 - 내부 동작 방식 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. JPA에서 가장 중요한 2가지 - 객체와 관계형 데이터메이스 매핑하기 - 영속성 컨텍스트 2. 엔티티 매니저 팩토리와 엔티티 매니저 - EntityManager는 DB에 붙기 위해 커넥션 풀을 사용 3. 영속성 컨텍스트 - JPA를 이해하는데 가장 중요한 용어 - 엔티티를 영구 저장하는 환경이라는 뜻 - EntityManager.persis(entity); -> 저장(영속석 컨텍스트를 통해서 엔티티를 영속화 한다.) 4. 엔티티의 생명주기 - 비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 - 영속(managed) 영속성 컨텍스트에 관리되는 상태 - 준영속(detached) 영속성 컨텍스트에 저장되었다가.. 2022. 7. 11.
728x90