본문 바로가기

Spring JPA17

다양한 연관관계 매핑 - 9 다대일 다대일 단방향(N:1) @Entity public class Member { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn(name = "team_id") private Team team; } 다대일 양방향(N:1, 1:N) 양방향은 외래 키가 있는 쪽이 연관관계의 주인이다. 항상 다(N)에 외래 키가 있다. -> 다 쪽이 주인 양방향 연관관계는 항상 서로를 참조해야 한다. 일대다 일대다 단방향(1:N) 일대다 단방향 매핑의 단점은 매핑한 객체가 관리하는 외래 키가 다른 테이블에 있다는 점이다. 즉, 본인 테이블에 외래 키가 있으면 엔티티의 저장과 연관관계 처리를 insert SQL 한 번으로 끝낼 수 있지만, 다른 테이블에 있으면 연관.. 2021. 7. 9.
연관관계 매핑 기초 - 8 단방향 연관관계 더보기 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계이다. 객체 연관관계 - 회원 객체와 팀 객체는 단방향 관계 테이블 연관관계 - 회원 테이블과 팀 테이블은 양방향 관계 객체 연관관계와 테이블 연관관계의 가장 큰 차이 - 참조를 통한 연관관계는 언제나 단방향이다. - 객체간에 연관관계를 양방향으로 만들고 싶으면 반대쪽에도 필드를 추가해서 참조를 보관해야 한다. 즉, 서로 다른 단뱡향 관계 2개다. - 반면에, 테이블은 외래 키 하나로 양방향으로 조인할 수 있다. 객체 관계 매핑 회원 엔티티 @Entity public class Member { @Id @Column(name = "member_id") private String id; private S.. 2021. 7. 6.
엔티티 매핑 - 7 @Entity 테이블과 매핑할 클래스 명시 기본 생성자 필수 final, enum, interface, inner 클래스 사용 금지 저장할 필드에 final 사용 금지 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정 클래스 이름을 그대로 사용 @Table 엔티티와 매핑할 테이블 지정 속성 기능 기본값 name 매핑할 테이블 이름 엔티티 이름을 사용 catalog catalog 기능이 있는 데이터베이스에서 catalog 매핑 schema schema 기능이 있는 데이터베이스에서 catalog 매핑 uniqueConstraints(DDL) DDL 생성 시에 유니크 제약조건 생성 기본 키 매핑 - IDENTITY 전략 기본 키 생성을 데이터베이스에 위임하는 전략 주로 MySQL, Postgre.. 2021. 7. 3.
영속성 관리 - 6 엔티티 수정 SQL을 사용하면 수정 쿼리를 직접 작성해야 한다. 그렇게 하면 수정 쿼리가 많아지는 것은 물론이고 비즈니스 로직을 분석하기 위해 SQL을 계속 확인해야 한다. 결국 직접적이든 간접적이든 비즈니스 로직이 SQL에 의존하게 된다. JPA로 엔티티를 수정할 때는 단순히 엔티티를 조회해서 데이터만 변경하면 된다. 즉, 엔티티의 변경사항을 데이터베이스에 자동으로 반영하는 기능 : 변경 감지(dirty checking) package jpabook.start; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.. 2021. 6. 29.