-
Notifications
You must be signed in to change notification settings - Fork 113
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
강원대 BE_이세진 3주차 과제 (1, 2단계) #257
base: ez23re
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
컴파일이 깨지고 있는것 같습니다.
확인후 다시 제출해주세요.
return "edit"; | ||
ProductDto product = productService.findById(id); // productService를 사용하여 id로 상품 찾기 | ||
|
||
model.addAttribute("product", product); // 모델에 상품 추가 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
외부에서 데이터를 받거나 내보낼때는 dto를 사용해보시면 좋을것 같습니다.
return id; | ||
} | ||
|
||
@Column(nullable = false, unique = true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Column에 columnDefinition을 이용해서 조금 더 명확한 컬럼 설명을 적어주시면 좋을것 같습니다.
public void password(String password) { | ||
this.password = password; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
데이터 영속성 모델과 dto를 구분하신다면 이러한 setter는 데이터 영속성 모델에서 제거할 수 있습니다. 😄
// @Query 어노테이션을 사용하여 직접 SQL 쿼리 작성 | ||
@Query("SELECT m FROM Member m WHERE m.email = :email AND m.password = :password") | ||
default Member findByEmailAndPassword(String email, String password) { | ||
return null; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이렇게 작성하신 이유가 있나요?
String URL = "jdbc:h2:mem:testdb"; | ||
String USERNAME = "sa"; | ||
String PASSWORD = ""; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
반드시 필요한 정보인가요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
리뷰를 확인해주시고 참고하여 3단계를 진행해주세요
public void withEmail(String newEmail) { | ||
new Member(newEmail, this.password); | ||
} | ||
|
||
// 새 비밀번호로 업데이트된 Member 인스턴스를 반환 | ||
public void withPassword(String newPassword) { | ||
new Member(this.email, newPassword); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
setter와 다를바가 없는 메서드같습니다.
메서드 내에서 validation을 해주어야 할 것 같습니다.
그리고 메서드 네이밍으로 with을 사용하신 이유가 있나요? 참고하신 컨벤션이 있을까요?
자바에서는 메서드에 동사를 사용하는 컨벤션이 있습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
setter 수정과 메소드명 동사로 시작 규칙에 맞게 수정하겠습니다.
this.password = password; | ||
} | ||
|
||
public Member() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
기본 생성자를 public으로 한 이유가 있을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다른 클래스에서 참조할 때 인텔리제이 빠른 수정(빨간 전구) 으로 자동 생성했습니다. 다시 보니 불필요한 부분 같아서 제거하겠습니다.
private String password; | ||
|
||
// member 와 wishlist 간의 일대다 관계 매핑 | ||
@OneToMany(mappedBy = "member", cascade = CascadeType.ALL, orphanRemoval = true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OneToMany로 설정해야하는 이유가 있을까요?
private String name; | ||
private int price; | ||
private String imgUrl; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
컬럼에 대한 설명이 없는것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수정하겠습니다.
// 업데이트 메서드 | ||
public void update(String name, int price, String imgUrl) { | ||
this.name = name; | ||
this.price = price; | ||
this.imgUrl = imgUrl; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
업데이트 메서드를 사용하지 않는것 같습니다.
@Entity | ||
public class WishList { | ||
|
||
@Id |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
id의 발번을 uuid로 한 이유가 있나요?
public class ProductName { | ||
|
||
@NotBlank(message = "상품명을 입력하세요.") | ||
@Size(max = 15, message = "상품명은 공백 포함 최대 15자") | ||
@Pattern(regexp = "^[\\w\\s()\\[\\]+\\-&/]*$", message = "상품명에 잘못된 문자가 있습니다.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ProductName을 사용해주세요.
@@ -0,0 +1,63 @@ | |||
//package gift.member.repository; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
테스트 코드가 전부 주석처리되어있네요?
테스트 코드를 다시 활성화 시켜주시면 좋을것 같습니다.
@GetMapping("/{member_id}") | ||
public Member getMemberById(@PathVariable Long id) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이렇게 하면 id에 올바른 값이 맵핑이 되나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
네이밍 수정과정에서 member_id 로 바꾸는 것을 빼먹은 것 같습니다. 수정하겠습니다.
@GeneratedValue(strategy = GenerationType.SEQUENCE) | ||
private Long member_id; | ||
|
||
@Column(nullable = false, columnDefinition = "BINARY(16)") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BINARY로 설정하신 이유가 있나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UUID 찾을 수 없다는 오류가 계속 떠서 https://jehuipark.github.io/java/my-sql-binary-reference 이 블로그에
“UUID 에는 16 바이트가 필요합니다”
“UUID 를 저장할 땐 VARCHAR 대신 BINARY(16) 컬럼을 이용하세요”
를 보고 VARCHAR 에서 바이너리로 수정했는데 솔직히 잘 모르겠습니다. 좀 더 공부해서 추가하겠습니다.
07.15.월 <최종>
멘토님 제가 금요일 구글폼 제출로 이 pr 주소 #332 를 보냈는데 아래 pr 브랜치로는 해결되지 않아서 다시 여기로 요청드립니다.
혼란드려서 죄송합니다. 테스트 코드 작성 중에 계속 오류가 생겨서 해결하려고 새 브랜치에서 새로 만들어 보려다가 실패했습니다.
본래 1단계 pr에 2단계까지 (엔티티와 엔티티 간 연관관계 매핑)을 구현했습니다.
테스트코드 주석처리 안하면 빌드 오류가 나서 일단 주석처리 합니다.. 테스트코드를 일단 삭제하는 게 맞을까요?
1단계 피드백 수정한 부분
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
0단계 피드백 수정한 부분