1. Entity
1.1. Schedule
이 클래스의 생성자는 DTO 클래스를 이용하고 있어서 DTO 클래스에 의존하고 있습니다.
이렇게 되면 DTO 클래스에 수정사항이 생겼을 때, 이 Entity도 같이 변경되어야 하므로 User 클래스처럼 필요한 필드를 직접 넣도록 하는 것이 조금 더 안전할 수 있습니다.
public Schedule(String title, String contents) {
this.title = title;
this.contents = contents;
}
1.2. Comment
댓글의 경우는 댓글이 생성될 때 반드시 일정(Schedule)과 작성자(User) 정보가 필요합니다.
즉, 이 객체는 생성시에 schedule과 user 필드는 필수이므로 생성자에 매개변수로 추가하면 더 안전할 것 같습니다.
2. Controller
2.1. ScheduleController
2.1.1. readSchedules() 메소드
아시다시피 PageRequest.of() 메소드의 매개변수로 사용되는 pageNumber 0부터 시작하는 정수이기 때문에, defaultValue 옵션을 적절히 사용하셨습니다.
일반 사용자 입장에서는 pageNumber는 1부터 시작한다고 생각하는게 일반적일 수 있습니다.
그래서 이 API를 이용하는 프론트 개발자와 잘 소통하여 지금처럼 pageNumber를 0부터 입력받을지,
아니면 일반 사용자의 입장을 고려하여 1부터 입력받고, 서버에서 다시 1을 뺀 값을 이용할 것인지 고민할 필요가 있습니다.
3. 참고
이미 알고 계실지도 모르겠지만 JPA에서 부모 엔티티에서 자식 엔티티를 삭제할 때 관련된 옵션은 orphanRemoval도 있습니다.
CascadeType.REMOVE와 비교하시면 좋을 것 같아서 링크를 남겨드립니다.
1. Entity
1.1.
Schedule이 클래스의 생성자는 DTO 클래스를 이용하고 있어서 DTO 클래스에 의존하고 있습니다.
이렇게 되면 DTO 클래스에 수정사항이 생겼을 때, 이 Entity도 같이 변경되어야 하므로
User클래스처럼 필요한 필드를 직접 넣도록 하는 것이 조금 더 안전할 수 있습니다.1.2.
Comment댓글의 경우는 댓글이 생성될 때 반드시 일정(
Schedule)과 작성자(User) 정보가 필요합니다.즉, 이 객체는 생성시에
schedule과user필드는 필수이므로 생성자에 매개변수로 추가하면 더 안전할 것 같습니다.2. Controller
2.1.
ScheduleController2.1.1.
readSchedules()메소드아시다시피
PageRequest.of()메소드의 매개변수로 사용되는pageNumber0부터 시작하는 정수이기 때문에,defaultValue옵션을 적절히 사용하셨습니다.일반 사용자 입장에서는
pageNumber는 1부터 시작한다고 생각하는게 일반적일 수 있습니다.그래서 이 API를 이용하는 프론트 개발자와 잘 소통하여 지금처럼
pageNumber를 0부터 입력받을지,아니면 일반 사용자의 입장을 고려하여 1부터 입력받고, 서버에서 다시 1을 뺀 값을 이용할 것인지 고민할 필요가 있습니다.
3. 참고
이미 알고 계실지도 모르겠지만 JPA에서 부모 엔티티에서 자식 엔티티를 삭제할 때 관련된 옵션은
orphanRemoval도 있습니다.CascadeType.REMOVE와 비교하시면 좋을 것 같아서 링크를 남겨드립니다.