@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 |