1. UserRole type 수정
post 작성 기능을 만들기 전 User Entity에서 userRole을 enum에서 string으로 변경했던 것이 생각이 났다.
그 때에는 계속 db에 enum의 name이 들어가지 않고, index가 들어갔었는데, 이는 User에서 column지정을 할 때 어노테이션을 붙여주지 않았기 때문으로 추정된다.
@Enumerated(EnumType.STRING)
private UserRole role;
ERD에서 요청했던 사항은 userRole을 enum으로 설정하라 지시하였기 때문에, 그것이 맞는 것 같아 다시 enum으로 고쳐주었다.
그 과정에서 ADMIN과 USER를 구분하는 것을 int index로 enum에서의 순서대로 지정해 주었다.
UserService
int index = 1;
//db에 유저가 아무도 없을 때, 새로 생성되는 계정을 admin으로
if (userRepository.count() == 0) {
index = 0;
}
User savedUser = userRepository.save(req.toEntity(encoder.encode(req.getPassword()), index, registeredAt));
UserJoinRequest
public User toEntity(String password, int index, Timestamp time) {
return User.builder()
.userName(this.userName)
.password(password)
.role(UserRole.values()[index])
.registeredAt(time)
.updatedAt(time)
.build();
}
지정 후 로컬에서 실행해 본 결과 UserRole이 제대로 db에 저장되는 것을 확인 할 수 있었다.
또한 앞으로 만들 기능에 중복되는 column인 생성시간이랑 수정시간을 따로 BaseEntity에 빼고, 자동 시간 입력을 위한 Auduit 적용을 해 보았다.
2. BaseEntity 생성
Configuration
JpaAuditingConfig
@Configuration
@EnableJpaAuditing
public class JpaAuditingConfig {
}
Auditing을 위한 configuration class를 생성해 주었다.
Domain
BaseEntity
@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@ToString
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
@Column
private LocalDateTime lastModifiedAt;
}
User
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Table(name = "user")
@Entity
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class User extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String password;
@Enumerated(EnumType.STRING)
private UserRole role;
@Column(unique = true)
private String userName;
}
BaseEntity를 extend하도록 설정하였다. 앞으로 만들 Entity들은 모두 BaseEntity를 extend하도록 설정한다.
'프로젝트 > 멋사 개인 프로젝트 (mutsa-SNS)' 카테고리의 다른 글
[08] mutsa-SNS 3일차 - (3) JwtTokenFilter Exception 추가 (0) | 2022.12.23 |
---|---|
[07] mutsa-SNS 3일차 - (2) 글쓰기 기능 (2) | 2022.12.22 |
[05] mutsa-SNS 2일차 - (2) 로그인 기능 (1) | 2022.12.21 |
[04] mutsa-SNS 2일차 - (1) 회원가입 test code (0) | 2022.12.21 |
[03] mutsa-SNS 1일차 - (2) 회원 가입 기능 (0) | 2022.12.21 |