Spring

@ManyToMany

MDanderson 2023. 6. 13. 05:34
   @ManyToMany
   @JoinTable(
      name = "user_authority",//연결테이블의 이름
      joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "user_id")},
      inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "authority_name")})
   /*
joinColumns: 현재 클래스(User)와 연결 테이블 사이의 연결을 정의하는 열입니다.
여기서는 "user_id"라는 이름의 컬럼이며, User 클래스의 "user_id"라는 필드를 참조합니다.
inverseJoinColumns: 다른 클래스(Authority)와 연결 테이블 사이의 연결을 정의하는 열입니다.
여기서는 "authority_name"이라는 이름의 컬럼이며, Authority 클래스의 "authority_name" 필드를 참조합니다.
 */
   private Set<Authority> authorities;

이 부분은 JPA에서 ManyToMany 관계를 설정하는 부분입니다. ManyToMany 관계는 양쪽 엔티티 모두에서 다른 쪽 엔티티를 여러 개 참조할 수 있는 관계를 의미합니다.

이 코드의 구체적인 설명은 다음과 같습니다:

@ManyToMany: 현재 클래스와 Authority 클래스 사이에 ManyToMany 관계가 있다는 것을 나타냅니다. 즉, 한 User는 여러 개의 Authority를 가질 수 있고, 한 Authority는 여러 User에 속할 수 있습니다.

@JoinTable: 이 어노테이션은 ManyToMany 관계를 맺는 두 테이블 사이에 연결 테이블이 필요하다는 것을 나타냅니다. 연결 테이블은 각각의 테이블을 참조하는 외래키를 가집니다.

name: 연결 테이블의 이름입니다.
joinColumns: 현재 클래스(User)와 연결 테이블 사이의 연결을 정의하는 열입니다. 여기서는 "user_id"라는 이름의 컬럼이며, User 클래스의 "user_id"라는 필드를 참조합니다.
inverseJoinColumns: 다른 클래스(Authority)와 연결 테이블 사이의 연결을 정의하는 열입니다. 여기서는 "authority_name"이라는 이름의 컬럼이며, Authority 클래스의 "authority_name" 필드를 참조합니다.
private Set<Authority> authorities;: ManyToMany 관계를 통해 User 객체가 여러 Authority 객체를 참조할 수 있도록 합니다. 이는 User가 가진 권한의 집합을 나타냅니다.

'Spring' 카테고리의 다른 글

와일드카드(?)  (0) 2023.06.14
@Valid  (0) 2023.06.13
@Builder  (0) 2023.06.13
애플리케이션 시작 시 데이터를 데이터베이스에 삽입방법 3가지  (0) 2023.06.13
JPQL vs Native SQL  (0) 2023.06.13