본문 바로가기

JPA18

자바 ORM 표준 JPA 프로그래밍 - 9장 값타입 https://github.com/klyhyeon/JPAStudy/blob/main/chapter/09/9%EC%9E%A5_%EA%B0%92%ED%83%80%EC%9E%85.md GitHub - klyhyeon/JPAStudy Contribute to klyhyeon/JPAStudy development by creating an account on GitHub. github.com 링크로 대체 2021. 7. 24.
자바 ORM 표준 JPA 프로그래밍 - 8장 프록시 프록시 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 실제 사용하는 시점에 데이터베이스를 조회할 수 있다. 프록시 기초 JPA에서 식별자로 엔티티 하나를 조회할 때는 EntityManager.find()를 사용한다. 이 메소드는 영속성 컨텐스트에 엔티티가 없으면 데이터베이스를 조회한다. 이 경우에는 조회한 엔티티를 사용하지 않아도 쿼리가 나간다. 엔티티를 실제 사용하는 시점에 조회하고 있으면 EntityManager.getRefernce()를 사용한다. 이 메소드는 실제 엔티티 객체가 아닌 프록시 객체를 리턴한다. 프록시 클래스는 .. 2021. 7. 8.
자바 ORM 표준 JPA 프로그래밍 - 7장 고급매핑 이번 장에서 다루는 내용들이다. 상속 관계 매핑 @MappedSuperclass 복합 키와 식별 관계 매핑 조인 테이블 엔티티 하나에 여러 테이블 매핑하기 상속 관계 매핑 RDBMS에는 객체지향 언어처럼 상속이라는 개념이 없다. 대신 그림과 같이 슈퍼타입 서브타입 관계 라는 모델링 기법이 상속 개념과 유사하다. ORM에서의 상속 관계 매핑은 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 이 슈퍼타입 서브타입 논리 모델을 실제 테이블로 구현할 때는 3가지 방법중 하나를 선택할 수 있다. 각각의 테이블로 변환 모두 테이블로 만들고 조회할 때 조인을 사용한다. JPA에서는 조인 전략이라고 한다. 통합 테이블로 변환 테이블을 하나만 사용하여 통합한다. JPA에서는 단일 테이블 전략이라고 .. 2021. 7. 8.
자바 ORM 표준 JPA 프로그래밍 - 6장 다양한 연관관계 매핑 외래키와 연관관계 외래 키를 관리하는 테이블, 객체(엔티티)가 연관관계의 주인입니다. 주인이 아니면 mappedBy 속성을 사용해 주인 필드 이름을 값으로 입력합니다. 다대일(@ManyToOne) [Member Team] 연관관계의 주인은 항상 다(N)쪽입니다. ERD에서 화살표 실선은 연관관계 주인이며 점선은 주인이 아니라는 표시입니다. 주인이 아닌 객체는 조회를 위한 JPQL이나 객체 그래프를 탐색할 때 사용합니다. 양방향 연관관계는 항상 서로를 참조해야 합니다. 서로를 참조하기 위해선 편의상 메소드를 작성하는 것이 좋습니다. Member의 setTeam()과 Team의 addMember() 메소드가 그런 메소드들입니다. 메소드는 한쪽에만 작성하는 것이 좋으며 양쪽에 다 작성하면 무한루프에 빠질 수 .. 2021. 7. 5.
자바 ORM 표준 JPA 프로그래밍 - 5장 연관관계 매핑 기초 작성자: 한창훈 ERD 에는 총 4가지 관계가 있다. 이를 JPA의 연관관계 매핑으로 매치시키면 하기와 같다. 일대일(1:1) - @OneToOne 일대다(1:N) - @OneToMany 다대일(N:1) - @ManyToOne 다대다(N:N) - @ManyToMany 📜 @OneToOne 속성기능기본값 targetEntity 연관관계 매핑의 대상이 되는 타겟을 설정한다. field의 class명 cascade database의 cascade와 동일하다. - fetch 로딩 전략. EAGER가 기본값이며, EAGER일 경우 즉시로딩을 의미한다. LAZY는 지연로딩을 의미한다. EAGER optional null인지 아닌지를 설정한다. 기본값은 true이며 nullable함을 의미한다. true mapped.. 2021. 7. 5.
자바 ORM 표준 JPA 프로그래밍 - 3장 JPA 영속성 컨텍스트 영속성 관리 엔티티 매니저는 엔티티를 저장, 수정, 삭제, 조회 등등 엔티티와 관련된 모든 일을 처리한다. 말그대로 엔티티를 관리하는 것이다. 엔티티 매니저 팩토리와 엔티티 매니저 DB를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다. 팩토리를 만드는 것으로 생성할 때 비용이 아주 많이 든다. EntityManagerFactory emf = Persistence.createEntityManagerFactory(""); 교재에서는 이것을 통해 META-INF/persistence.xml에 persistence-unit name에 매핑된 값을createEntityManager에 넣어준다. 필요할때마다 엔티티 매니저 팩토리에서 엔티티 매니저를 생성하면 된다. .. 2021. 7. 5.