Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

정유빈(B) - Spring Project with JPA and H2 Database #3

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

xxubin04
Copy link

@xxubin04 xxubin04 commented Jul 11, 2024

1. H2 Database Test


스크린샷(397)


2. Postman

  • student 추가

  • student 조회

  • course 추가

  • course 조회
  • course 삭제

  • enrollment 추가

3. H2 Database Check

많이 부족하지만 잘 부탁드립니다!🙇🏻‍♀️

@xxubin04
Copy link
Author

노션 링크입니다!

Copy link
Contributor

@coke98 coke98 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨어요! 계층별 관심사를 잘 분리한 점도 좋았고, JPA를 활용한 기본 구조를 잘 이해하고 있는게 보여서 좋았습니다! 다음에는 예외처리나 트랜잭션도 적용해보고, 더 복잡한 로직도 프로젝트를 진행하면서 마주해보면 좋을 것 같아요. 항상 열심히하고 성장하는게 보여서 좋네요 :)

}

@PutMapping("/{courseId}")
public ResponseEntity<Course> updateCourse(@PathVariable Long courseId, @RequestBody Course courseDetails) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

body에서 클래스를 바로 바인딩해준 점은 좋았어요. 다만 이게 엔티티를 직접 바인딩하는 방법보다는 DTO라는 중간 클래스를 두고 변환하는걸 추천합니다. 예시로 API 마다 모든 엔티티의 필드를 필요하는게 아니라 특정 정보만을 받는게 필요할 수도 있겠죠.

API 문서대로 받는 값들을 커스텀해야하는 경우가 생길 수 있어서 보통은 CourseUpdateRequest와 같은 DTO 클래스를 따로 두곤합니다! 채현님이랑 이 부분 관련 이야기를 서로 해보면 좋을 것 같네요.

  • 자바 버전에 따라 DTO의 경우 record를 쓰는 것도 선호되기도 합니다

@Autowired
private EnrollmentService enrollmentService;

@PostMapping("/add")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

URL에서 add를 넣지 않아도 충분한 의미를 갖지 않을까 싶네요. 왜 그럴까요?

@Autowired
private CourseRepository courseRepository;

public Enrollment addEnrollment(Long studentId, Long courseId) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저장소에 접근 하는 코드를 한 메서드로 모은 경우 트랜잭션 어노테이션을 쓰면 좋을 것 같아요. 그럼 트랜잭션을 어떻게 사용할 수 있고, 이 코드들에 적용했을때 어떤 실질적인 이점이 있을까요?

@@ -0,0 +1,23 @@
package xxubin04.DB_spring.controller;

public class AddEnrollmentRequest {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오 다른 리뷰에서 DTO 관련 글을 썼었는데, 여기서는 활용 해주셨었네요. 레코드 형식을 써보는것도 좋고, 네이밍을 저는 EnrollmentAddRequest로 쓰는걸 더 선호하는 편이긴해요. 동사형이 먼저 나오면, 메서드네이밍(행위) 처럼 보이더라구요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants