반응형
얼마전 회사에 특성화고 졸업을 앞둔 친구가 세명 들어왔다. 이 아이들을 실습하고 교육을 해서 정규직으로 전환을 해야하는 과제가 생겼다. 각 파트별로 특성이 있는 친구들이라 특색을 살펴보는 것도 재미있는 일이다.
그중 백엔드 파트를 지원한 아이가 코딩한 부분을 보면서 @Enumerated를 사용한 부분을 보게 되었고 Swift나 Objective-C에서 자주 사용하는 방법과 유사해서 기록을 남겨 본다.
아마 그 친구도 내가 지금 읽고 있는 저자의 블로그나 책 같은 곳에서 보고 차용했을 것 같기도 하다.
@Enumberated(EnumType.STRING)
@Column(nullable = false)
private Role role;
JPA를 사용하는 domain(@Entity) 부분에 정의한 예.
JPA로 데이터베이스로 저장할 때 Enum값을 어떤 형태로 저장할지를 결정하고 기본적으로 int로 된 숫자가 저장된다고 한다. 숫자로 저장되면 데이터베이스로 확인할 때 그 값이 무슨 코드를 의미하는지 알수가 없기 때문에 문자열(EnumType.STRING)로 저장될 수 있도록 선언한 것이다.
Enum클래스 Role생성
public enum Role {
GUEST("ROLE_GUEST", "손님"),
USER("ROLE_USER", "일반사용자");
private final String key;
private final String title;
}
스프링 시큐리티에서는 권한 코드에 항상 "ROLE_"가 앞에 있어야만 한다.
사용 방법은 다음과 같다.
public User toEntitiy() {
return User.builder() {
.name(name)
.email(email)
.picture(picture)
.role(Role.GUEST)
.build();
}
}
build() 를 사용해서 User Entity를 만드는 예제코드이다.
반응형
'프로그래밍 > Spring' 카테고리의 다른 글
Mybatis & maridb log4jdbc설정 예. (0) | 2020.02.05 |
---|---|
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) (0) | 2020.01.20 |
마이바티스의 동적 쿼리 (0) | 2019.12.19 |
SpringBoot Page객체에서 제공하는 메서드. (0) | 2019.12.19 |
@Entity 매핑 설정에 따르는 옵션 정보 (0) | 2019.12.19 |