Java Persistence API자바 진영의 ORM 기술 표준Object-relational mapping (객체 관계 매핑)객체는 객체대로 설계관계형 데이터베이스는 관계형 데이터베이스대로 설계ORM 프레임워크가 중간에서 매핑대중적인 언어에는 대부분 ORM 기술이
JPA에는 Persistence라는 클래스가 있는데 이 클래스가 persistence.xml 을 읽고 EntityManagerFactory 클래스를 생성한다.EntityManagerFactory가 EntityManager를 생성한다.@Entity : JPA가 관리할 객
웹 애플리케이션에 엔티티 매니저 팩토리가 있다.(싱글톤) 만약 클라이언트에서 요청이오면 엔티티 매니저 팩토리에서 엔티티 매니저를 생성한다.엔티티 매니저는 내부적으로 DB connection을 사용해서 DB를 사용하게 된다.JPA를 이해하는데 가장 중요한 용어엔티티를 영
영속성 컨텍스트의 변경 내용을 데이터베이스에 반영변경 감지수정된 엔티티를 쓰기 지연 SQL 저장소에 등록쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리)em.flush() : 직접 호출트랜잭션 커밋 : 플러시 자동 호출JPQL 쿼리 실행
영속 -> 준영속영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detatched) 영속성 컨텍스트가 제공하는 기능을 사용 못함 em.detatch(entity) : 특정 엔티티만 준영속 상태로 전환 em.clear() : 영속성 컨텍스트를 완전히 초기화 em.close
엔티티 매핑 >#### 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : Column 기본 키 매핑 : @Id 연관관계 매핑: @ManyToOne, @JoinColumn 객체와 테이블 매핑 @Entity > - @Entity가 붙은 클래스는 J
회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계다.참조가 아닌 외래키 값을 그대로 가지고 있다. Member와 Team이 연관관계가 맺어져 있지 않기 때문에 Member에서 해당하는 Team을 찾을 때 참조를 할 수 없어 Member
한 팀에 여러 멤버가 들어갈 수 있으므로 Member 와 Team은 N : 1 관계이다. 따라서 Member에 @ManyToOne 애노테이션을 붙이고 Team 과 team_id(FK)를 연관관계 매핑하였다. 아직 Team 객체의 정보가 필요 없기 때문에 DB에서 Tea
다중성단방향, 양방향 연관관계의 주인 다대일 : @ManyToOne일대다 : @OneToMany일대일 : @OneToOne다대다 : @ManyToMany테이블외래 키 하나로 양쪽 조인 가능사실 방향이라는 개념은 없다. 객체참조용 필드가 있는 쪽으로만 참조 가능한쪽만 참
관계형 데이터베이스는 상속 관계가 없다. 슈퍼 타입 서브 타입 관계라는 모델링 기법이 객체의 상속과 유사하다. 상속관계매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환
공통 매핑 정보가 필요할 때 사용 (생성시간, 수정시간)상속 관계 매핑이 아니다.엔티티 또한 아니고 테이블과 매핑되지 않는다.부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공한다.조회, 검색이 불가하다. 직접 생성해서 사용할 일이 없기 때문에 추상 클래스를 권장
회원만 출력하면 되는데 회원과 팀이 연관관계가 맺어져 있다고 팀 정보까지 DB에서 가져오면 불필요한 정보까지 가져오게 되는 거라 성능에 최적화에 문제가 생긴다. JPA는 지연로딩이라는 것을 이용해 이러한 문제를 방지한다. em.find() vs em.getRefere
Fetch = LAZY를 사용해 Member 객체만 실제 Entity로 가져오고 Team 객체는 빈껍데기인 프록시 객체로 가져온다.쿼리를 보면 Member 객체의 값들만 select 해서 가져오는 것을 확인할 수 있다. 객체를 가져오는 것을 확인할 수 있다.(값 X)
특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 ex) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장 Cascade를 설정하면 부모 객체를 영속화 할 때 자식 컬렉션들도 같이 영속화 해준다. 영속성 전이는 연관관계를 매핑하는 것