Spring Framework/JPA

Spring Framework/JPA

[JPA] JPA 영속성 전이란, CASCADE.ALL 사용법, 연관관계 편의 메소드란

영속성 전이란 : CASCADE - 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들어 주는 것을 의미합니다. 위의 예시로 Parent와 Child는 1:N 관계로 매핑되어 있습니다. Child 엔티티는 한 Parent와 연결되어 있습니다. 이때 Parent 엔티티를 저장할 때 연관된 자식 엔티티도 함께 저장하는 것을 영속성 전이라 합니다. 영속성 전이 : CASCADE 주의 영속성 전이는 연관관계를 매핑하는 것과 관련이 없습니다. 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리한 기능만 제공하는 것입니다. CASCADE 종류 ALL : 모두 적용 PERSIST : 영속 REMOVE : 삭제 MERGE : 병합 REFRESH : 리프레쉬 DETACH : DETACH 모..

Spring Framework/JPA

[JPA] JPA 상속 관계 매핑과 @MappedSuperClass 사용하기 - 조인전략, 싱글 테이블, @CreatedDate, @LastModifiedDate

상속관계 매핑 관계형 데이터베이스에는 상속 관계가 없습니다. 객체의 상속 구조와 DB의 슈퍼타입 - 서브타입 관계를 매핑 슈퍼타입-서브타입 논리 모델을 물리 모델로 구현하는 3가지 방법 조인 전략 : 각각 테이블로 변환 단일 테이블 전략 : 통합 테이블로 변환 구현 클래스마다 테이블 전략 : 서브 타입 테이블로 변환 (비추천) 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 슈퍼 타입 엔티티 @DiscriminatorColumn(name=’DTYPE’) 부모 클래스에 선언합니다. 하위 클래스를 구분하는 용도의 컬럼입니다. 관례는 ..

Spring Framework/JPA

[JPA] JPA 페치조인과 DISTINCT - 컬렉션 페치 조인 데이터 중복 문제 해결

다대일 페치 조인 (Member - Team) 다대일 페치 조인을 하게 되면 데이터 중복이 발생하지 않습니다. String jpql = "select m from Member m join fetch m.team"; List members = em.createQuery(jpql, Member.class) .getResultList(); for (Member member : members) { //페치 조인으로 회원과 팀을 함께 조회해서 지연 로딩X System.out.println("username = " + member.getUsername() + ", " + "teamName = " + member.getTeam().name()); } // username = 회원1, teamname = 팀A // u..

Spring Framework/JPA

[JPA] 연관관계 매핑, 양방향, 연관관계 주인, mappedBy

목표 객체와 테이블 연관관계의 차이 이해 객체의 참조와 테이블의 외래 키 매핑 이해 단방향, 양방향 이해 다중성 : 다대일, 일대다, 다대다 이해 연관관계의 주인 연관관계가 필요한 이유 객체를 테이블에 맞추어 모델링 (연관관계가 없는 객체 / 사용 X) @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String @Column(name = "TEAM_ID") private Long teamId; } @Entity public class Team { @Id @GeneratedValue private Long id; private String name; } 참조 대신에 외래 ..

kylo
'Spring Framework/JPA' 카테고리의 글 목록