Code Refactoring
외부 API는 동일하게 제공되나 내부적으로 오류같은 것에 대한 대비가
탄탄하게 되도록 설계하는 것.
JPA Enum 형태 값 관리
이를 테면 status라는 변수에 REGISTERED / UNREGISTERED가
직접 입력으로 들어가게 되는데 오타나 여러 오류가 발생 가능.
enum을 만들고 원하는 값을 만들고 그 안에 보일
index , title, description 등 원하는 변수 설정하고
변수 생성함. 그리고 그 변수들을 받을 수 있도록 어노테이션 지정 하고
만든 enum을 지정할 Entity에서 enum 클래스로 변수를 바꿔주고
ApiRequest , ApiResponse 모두 바꿔줌.
<코드>
@Getter
@AllArgsConstructor
public enum UserStatus {
REGISTERED(0,"등록","사용자 등록 상태"),
UNREGISTERED(1,"해지","사용자 해지 상태");
//첫번째 인덱스 , 두번째 타이틀 , 세번째 상세 설명
//3가지에 대한 변수 설정.
//이 3가지에 대해 설정 가능하도록 AllArgsConstructor등 밖에서 받을 수 있도록 설정
private Integer id;
private String title;
private String description;
}
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //데이터 베이스에 기본키 생성 위임. Mysql
private Long id;
private String account;
private String password;
@Enumerated(EnumType.STRING)
private UserStatus status; //REGISTERED / UNREGISTERED
private String email;
private String phoneNumber;
private LocalDateTime registeredAt;
private LocalDateTime unregisteredAt;
@CreatedDate
private LocalDateTime createdAt;
@CreatedBy
private String createdBy;
@LastModifiedDate
private LocalDateTime updatedAt;
@LastModifiedBy
private String updatedBy;
//User 1 : N OrderGroup
@OneToMany(fetch = FetchType.LAZY,mappedBy = "user")
private List<OrderGroup> orderGroupList;
}
public class UserApiRequest {
private Long id;
private String account;
private String password;
private UserStatus status;
private String email;
private String phoneNumber;
private LocalDateTime registeredAt;
private LocalDateTime unregisteredAt;
//creat와 update는 클라이언트에서 받는게 아니고 서버 단이기 때문에 생략
}
public class UserApiResponse {
private Long id;
private String account;
private String password;
private UserStatus status;
private String email;
private String phoneNumber;
private LocalDateTime registeredAt;
private LocalDateTime unregisteredAt;
}
@Override
public Header<UserApiResponse> create(Header<UserApiRequest> request) {
//1. request data
UserApiRequest userApiRequest = request.getData();
//2. User 생성
User user = User.builder()
.account(userApiRequest.getAccount())
.password(userApiRequest.getPassword())
.status(UserStatus.REGISTERED)
.phoneNumber(userApiRequest.getPhoneNumber())
.email(userApiRequest.getEmail())
.registeredAt(LocalDateTime.now())
.build();
User newUser = userRepository.save(user);
//3 .생성된 데이터 -> userApiResponse return
return response(newUser); //id등 디비에서 추가되는 것이 들어가므로 newUSer로 해줘야 함.
}
enum의 항목을 가져오는 것은
String statusTitle = item.getStatus().getTitle();
'Spring' 카테고리의 다른 글
페이징 처리 (0) | 2019.11.18 |
---|---|
Controller 추상화 (0) | 2019.11.17 |
CRUD Logic 구현 (0) | 2019.11.17 |
@Slf4j (0) | 2019.11.14 |
@PathVariable (0) | 2019.11.14 |