Spring + Boot

Spring Security - 3

devRachel 2021. 4. 17. 01:51
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타입으로 지정합니다.

 

프로젝트가 실행되면서 테이블이 생성된걸 확인할 수 있습니다.