import lombok.*;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import java.util.HashSet;
import java.util.Set;
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString
public class Member extends BaseEntity{
@Id
private String email;
private boolean fromSocial;
@ElementCollection(fetch = FetchType.LAZY)
@Builder.Default
private Set<MemberRole> roleSet = new HashSet<>();
public void addMemberRole(MemberRole memberRole){
roleSet.add(memberRole);
}
}
생성한 Member는 여러개의 권한을 가져야 되는데 Member객체의 일부로만 사용하기 때문에 JPA의 @ElementCollection을 사용합니다. 만들어 두었던 BaseEntity를 이용하기 위해 프로젝트 생성시 만들어진 어플리케이션 클래스에 @EnableJpaAuditing 어노테이션을 추가합니다.
public enum MemberRole {
USER,MANAGER,ADMIN
}
MemberRole 타입값을 처리하기 위해 Set<MemberRole>타입을 추가하고 Fetch는 LAZY타입으로 지정합니다.
프로젝트가 실행되면서 테이블이 생성된걸 확인할 수 있습니다.
'Spring + Boot' 카테고리의 다른 글
서비스계층과 DTO (0) | 2021.04.21 |
---|---|
JPA와 Entity , 동적 쿼리 처리를 위한 Querydsl 설정 (0) | 2021.04.18 |
Spring Security 연동하기 -2 (CSRF를 곁들인) (0) | 2021.04.16 |
Spring Security 연동하기 -1 (0) | 2021.04.15 |
JPA 쿼리 메서드 기능 @Query (0) | 2021.04.08 |