프로젝트를 하는 과정에 있어서 기록하는 것이다.
잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다.
오늘은 사실 매핑에 조금 헷갈리고 어려워서 설명하고, 이해하고 하는데 시간을 많이 쏟았다.
✅ 연관관계 패핑
- 각 엔티티 테이블 간의 참조를 위해 매핑을 하였다.
- 테이블과 테이블 사이의 관계성을 생각하는게 어려웠다.
- User : Question = 1 : N
- User : Answer = 1 : N
- User : QuestionVote = 1 : N
- User : AnswerVote = 1 : N
- Question : Answer = 1 : N
Question : QuestionVote = 1 : 1- 1 : N 으로 보고 재 매핑하기로 했다.
- 하나의 질문의 여러 추천이 되는데 참조가 필요한 부분이 있기 때문?
Answer : AnswerVote = 1 : 1- 1 : N 으로 보고 재 매핑하기로 했다.
- 하나의 질문의 여러 추천이 되는데 참조가 필요한 부분이 있기 때문?
- 그리고 해당 매핑을 할 때 방식이 헷갈려서 정리해두었다.
- 다대다는 가운데의 조인 테이블을 만들어 각각 일대다로 매핑한다!
/*
* 1 : N 혹은 N : 1 의 매핑의 경우
* 예시는 User : Question = 1 : N
*/
@Entity(name = "USERS")
public class User {
...
@OneToMany(mappedBy = "users")
private List<Question> questionList = new ArrayList<>();
...
// 연관관계 편의 메서드
public void addQuestion(Question question) {
questionList.add(question);
if (question.getUser() != this) {
question.setUser(this);
}
}
}
public class Question {
...
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
...
// 연관관계 편의 메서드
public void setUser(User user) {
this.user = user;
}
}
🚨 아래의 내용은 수정해서 현재 필요 없으나 일대일 매핑을 기억하기 위해 삭제하지 않으려고 한다.
/*
* 1 : 1의 경우
* 예시는 Question : QuestionVote = 1 : 1
*/
public class Question {
...
@OneToOne(mappedBy = "question", cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
private QuestionVote questionVote;
...
// 연관관계 편의 메서드
public void setQuestionVote(QusetionVote questionVote) {
this.questionVote = questionVote;
if (questionVote.getQuestion() != this) {
questionVote.setQuestion(this);
}
}
}
public class QuestionVote {
...
@OneToOne
@JoinColumn(name = "question_id")
private Question question;
...
// 연관관계 편의 메서드
public void setQuestion(Question question) {
this.question = question;
if (question.getQuestionVote() != this) {
question.setQuestionVote(this);
}
}
}
🔥 해야할 것
: 끝나면 취소선으로 표시
1️⃣ User CRUD 구현
UserController 구현UserService 구현UserDTO 구현UserRepository 구현UserMapper 구현
2️⃣ Spring Security 공부 및 로그인 로그아웃 기능
- 인증 된 사용자가 질문을 올리는 방법
- OAuth2 여러 개 사용하는 방법
로그인 기능 구현 공부- 로그인 로그아웃 기능 구현 -> 주말까지 이용해서 해내볼 것!
'Study in Bootcamp > Pre-Project' 카테고리의 다른 글
[Pre-Project] Day 8 : JWT 이용한 로그인 및 권한 부여 (0) | 2022.10.31 |
---|---|
[Pre-Project] Day 7 : CheckStyle Convention Build (0) | 2022.10.28 |
[Pre-Project] Day 5 : Git Flow 꼬임, Check Point 미적용, User (0) | 2022.10.26 |
[Pre-Project] Day 4 : ERD 작성, 테이블 명세서 작성, API 명세서 작성 (0) | 2022.10.25 |
[Pre-Project] Day 3 : 초기 설정 및 사용자 요구사항 정의서 (0) | 2022.10.24 |
댓글