연관관계를 매핑할 떄 고려해야하는 3가지 사항

  1. 다중성
  2. 단방향, 양방향
  3. 연관관계의 주인

 

다중성의 종류

  1. 다대일: @ManyToOne
  2. 일대다: @OneToMany
  3. 일대일: @OneToOne
  4. 다대다: @ManyToMany

 

 

외래키를 매핑하는 방법

@JoinColumn 

속성 기능 기본 값
name 매핑할 외래 키 이름 "필드명" + "_"  을 참조하는 테이블의 기본 키 컬럼 명
referencedColumnName 외래키가 참조하는 대상 테이블의 컬럼명 참조하는 테이블의 기본 키 컬럼 명
foreignKey(DDL) 외래 키 제약조건을 직접 지정
테이블을 생성할 때만 사용
 
unique @Column의 속성과 같음  
nullable @Column의 속성과 같음  
insertable @Column의 속성과 같음  
updateable @Column의 속성과 같음  
columnDefinition @Column의 속성과 같음  
table @Column의 속성과 같음  

 

 

다대일(@ManyToOne)

다대일 단방향과 다대일 양방향이 있다.

 

다대일 단방향: 가장 많이 사용하는 연관관계이며 이에 반대되는 관계는 일대다 이다.

    class Member{
        //연관관계 주인 클래스, Many

        @Id
        @Column(name = "MEMBER_ID")
        private Long id;

        private String username;

        @ManyToOne
        @JoinColumn(name="TEAM_ID")
        private Team team; //Team 객체와 연관관계를 맺음
    }
    class Team{
        //One

        @Id
        @Column(name = "TEAM_ID")
        private Long id;

        private String name;

    }

 

 

 

다대일 양방향: 서로가 서로를 참조함

반대편에 @OneToMany를 사용하여 양방향 설정

    class Member{
        //연관관계 주인 클래스, Many

        @Id
        @Column(name = "MEMBER_ID")
        private Long id;

        private String username;

        @ManyToOne
        @JoinColumn(name="TEAM_ID")
        private Team team; //Team 객체와 연관관계를 맺음
    }
    class Team{
        //One

        @Id
        @Column(name = "TEAM_ID")
        private Long id;

        private String name;

        @OneToMany(mappedBy = "team")//양방향 연관관계 설정
        private List<Member> memberList = new ArrayList<>();

    }

 

@ManyToOne 속성

 

속성 기능 기본값
optional false로 설정하면 연관된 엔티티가 항상 있어야 한다 true
fetch  글로벌 패치 전략을 설정한다 FetchType.EAGER(즉시 로딩)(default)
FetchType.LAZY(지연 로딩)(권장 설정)
cascade 영속성 전이 기능을 사용한다  
targetEntity 연관된 엔티티의 타입 정보를 설정한다.  

 

 

출처

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

+ Recent posts