본문 바로가기

JPA8

자바 ORM 표준 JPA 기본편 - 영속성 전이 영속성 전이: CASCADE 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용한다.ex) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장영속성 전이: CASCADE - 주의!영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없다엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함을 제공할 뿐이다 CASCADE의 종류ALL: 모두 적용PERSIST: 영속REMOVE: 삭제MERGE: 병합REFRESH: REFRESHDETACH: DETACH 언제 쓰느냐?하나의 부모가 자식들을 관리할 때 의미가 있다.ex) 게시판과 첨부파일의 관계쓰면 안되는 케이스) 파일을 여러 엔티티에서 관리하면 쓰면 안된다.Child의 고유한 Parent를 가지고 있을 때만 사용(단일.. 2024. 4. 24.
자바 ORM 표준 JPA 기본편 - 프록시와 연관관계 관리 프록시란?실제 엔티티 객체 대신 데이터베이스 조회를 지연할 수 있는 가짜 객체를 의미. 실제 객체를 사용하면 편한데 가짝 객체인 프록시를 쓰는 이유가 뭘까?한 예시를 보고 알아보도록 하겠다. Member를 조회할 때 Team도 함께 조회해야 될까? JPA 관점에서 멤버와 팀을 동시에 조회하는 것은 멤버와 그들의 팀 정보를 함께 출력해야 할 때 유리하지만, 멤버 정보만 필요로 하는 상황에서는 자원의 낭비가 발생할 수 있다.-> 이러한 문제는 프록시를 이용한 지연 로딩 방식으로 해결이 가능하다! 프록시 기초em.find() vs em.getReference()em.find() : 데이터베이스를 통해서 실제 엔티티 객체를 조회em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 .. 2024. 4. 17.
자바 ORM 표준 JPA 기본편 - 고급매핑 상속관계 매핑 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑해주는 것 객체는 상속관계가 있다, 관계형 데이터베이스는 상속 관계가 없다. 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 ㅡ> 슈퍼타입, 서브타입 테이블을 각각 생성하여 조회할 때 조인을 사용. 조인 전략 통합 테이블로 변환 ㅡ> 테이블을 하나만 사용하여 통합. 단일 테이블 전략 서브타입 테이블로 변환 ㅡ> 서브 타입마다 하나의 테이블을 생성. 구현 클래스마다 테이블 전략 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED: 조인 전략 SINGLE_TABLE: 단일 테이블 .. 2024. 4. 12.
자바 ORM 표준 JPA 기본편 - 다양한 연관관계 매핑 이번 글은 연관관계에 매핑에 대해 알아보는 시간을 갖겠습니다. 먼저 기본적인 고려사항에 대해 알아보겠습니다. 연관관계 매핑시 고려사항 3가지 • 다중성 • 단방향, 양방향 • 연관관계의 주인 다중성 JPA에서 나오는 어노테이션은 전부 DB랑 매핑하기 위해 있다고 보면 된다. 그래서 데이터베이스의 관점에서의 다중성을 기준으로 고민하면 된다. 애매할 땐 반대쪽을 생각하면 된다.(ex : 회원 - 팀 (대칭성) 1대다 의 반대는 다대1) 대칭성 생각! 다대일: @ManyToOne 일대다: @OneToMany 일대일: @OneToOne 다대다: @ManyToMany (실무에서 거의 사용 안함) 단방향, 양방향 • 테이블 외래 키 하나로 양쪽 조인 가능 사실 방향이라는 개념이 없다 • 객체 참조용 필드가 있는 쪽.. 2024. 4. 4.
자바 ORM 표준 JPA 기본편 - 연관관계 매핑 기초 [김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 학습 후 정리한 글입니다.] 목표 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 • 방향(Direction) : 단방향, 양방향 • 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해 • 연관관계의 주인(Owner) : 객체 양방향 연관관계는 관리 주인이 필요 연관관계가 필요한 이유 '객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다.' by 객체지향의 사실과 오해 예제 시나리오 • 회원과 팀이 있다. • 회원은 하나의 팀에만 소속될 수 있다. • 회원과 팀은 다대일 관계다. 객체 테이블에 맞추어 모델링(연관관계가 없는 객체).. 2024. 4. 1.
자바 ORM 표준 JPA 기본편 - 엔티티 매핑 엔티티 매핑 JPA를 사용하는데 가장 중요한 것은 엔티티와 테이블을 정확하게 매핑하는 것이다. XML에 기입해도 되지만 어노테이션 방식이 좀 더 쉽고 직관적이라서 대표적인 매핑 어노테이션을 소개하려고 합니다. 엔티티 매핑 소개 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn (1대N, N대N) 1. 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리를 시작하고, 이것을 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 가 필수. 주의! 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) - 왜냐하면 JPA.. 2024. 3. 29.