[Spring 프로젝트] step 2 요구사항 및 리뷰

지니🧸·2023년 3월 18일
0

피드백 저장소

목록 보기
2/5

요구사항

  • 유저의 등급을 만들고, 각 등급마다 접근 권한이 다름
  • 처음 가입할 때는 준회원. 유저의 권한 조작 가능
  • 각 유저당 사용 가능 API는 한개 이상

피드백

전체 조회 API는 pagination 사용

전체 조회에 pagination을 하지 않으면 데이터 규모가 커질 때 부하가 옴

UserService.java

public List<UserDto> findAllUsers(int page, int size) {
    PageRequest pr = PageRequest.of(page, size);
    List<UserDto> userDtos = new ArrayList<>();
    Page<User> users = userRepository.findAll(pr);
    if (users.getNumberOfElements() == 0) {
        return null;
    }
    for (User user : users) {
        UserDto userDto = new UserDto();
        userMapper.buildUserDtoFromUser(user, userDto);
        userDtos.add(userDto);
    }
    return userDtos;
}

데이터 생성시에는 HTTP Status Code 201 (Created) 사용

ActivityController.java

@PostMapping("/new")
public ResponseEntity<?> registerActivity(@RequestBody @Valid ActivityRequest activityRequest) {
    String username = getLoginUsername();
    activityService.saveActivity(activityRequest, username);
    return ResponseEntity.ok(HttpStatus.CREATED);
}

JPA는 더티체킹을 하기 때문에 데이터 변경 후 다시 리포지토리에 저장할 필요 없음

DTO에는 @Enumerated 생략

@Enumerated는 JPA 어노테이션이라 DTO에서는 생략한다

profile
우당탕탕

0개의 댓글