안녕하세요, Brad입니다. 오늘도 여느 때와 같이 미션을 진행하면서 고민했던 부분이나 깨달은 부분을 정리해볼게요.
Mustache 추가 사용법
- 객체가 들어있는 때 해당 객체의 속성 불러오기
{{#객체명}}필드명{{/객체명}}
- 이렇게 하지말고 다음과 같이 좀 더 간단하게 객체의 속성을 불러낼 수 있습니다.
{{객체명.필드명}}
으로요!!
Entity 필드 아닌 getter 호출하기
- 해당 객체 내 (get + 해당이름) 으로 정의되어 있는 경우 Mustache에서 {{해당이름}} 으로 호출 할 수 있습니다.
- Entity필드에 formattedDate 라는 속성을 넣지 않고 getter메서드처럼 보이게 정의해두었습니다(
getFormattedDate()
). 비록 Entity 속성이 아니더라도 Mustache에서{{formattedDate}}
로 메서드에서 return 하는 값을 받을 수 있었습니다! - (질문) getter메서드 내에서 가공해서 html로 값들을 보내는 경우가 있는데 차라리 getter메서드는 그대로 두고 따로 가공해서 보내는 부분을 getter메서드처럼 보이게 해서 값을 보내는 것이 좋을까요?
DB Column명
- camel표기법으로 입력된 것은 h2 DB에 '_'로 구분되어 입력됩니다. 예를들어 'createDate'는 'create_date'로 만들어지는 것이죠!
Equals 메서드 활용
- 이전에 매개변수로
User
로 넘어오면 User 클래스 내 메서드를 정의해두고 각각 유저의 아이디를 비교하였습니다. - 본질적인 부분에서 다른 점은 없지만 Equals 메서드를 @Override하여 비교하면 더 깔끔합니다. 다만
User
의 여러 속성을 모두 비교하면 개인정보 변경시 다른User
로 인식할 수 있기 때문에 id만 비교하여 같은 유저인지 판단합니다. - 그리고
User
비교를 이전에matchUser()
로 이름을 정했었는데 Pobi는isSameUser()
로 이름을 붙였더라구요. 이게 더 직관적인 것 같아 저도 이를 따르게 하였습니다.
- 이전에 매개변수로
Question에서 Answer 매핑
Question
내에 OneToMany 관계로Answer
를 매핑하여List<Answer>
형태로 받을 수 있었습니다. 이렇게 되면 좋은 점은 각각 Question의 Answer들을 AnswerRepository에서 따로 꺼낼 필요없이 각각의 Question 객체에서 바로 접근하다는 점입니다.이를 통해 '댓글갯수'를 구현하는 부분의 고민을 해결할 수 있었습니다.
Question
내 answerSize 속성을 추가하는 건 아니지만 조금전 위에서 getter처럼 만들어놓고List<Answer>
의 size()를 return하면 되는 것이죠.형식은 다음과 같습니다.
OneToMany(mapped = "(Answer에 question 매핑된 이름)")
OrderBy("id ASC")
(질문) 이렇게 매핑하면 Mustache에서 {{#questions}}로 부를 수 있습니다. 그런데 getter/setter 메서드 없이 부를수 있나요? 저는 getter없이는 안되는데..
이렇게 매핑을 해놓으면
Question
을 지울 때 문제가 발생합니다.Question
과 연결된Answer
들도 같이 지울 것인지 설정이 필요한데 default는 이러한 설정이 따로 없으면 삭제가 안되도록 한 것 같습니다. 이 때 고민해야 할 두가지 옵션은orphanRemoval = true
와 'delete Cascade'입니다.orphanRemoval = true
는 자식 'entity'가 부모 'entity'를 더이상 참조되지 않을 때(관계가 끊어지면) 자식 'entity'를 자동으로 삭제하는 것을 말합니다.- 이와 달리 'delete Cascade'는 관계가 끊어지는 것과 관련없이 그런 것 고려없이 연결된 것을 같이 연쇄적으로 삭제하는 것을 말합니다.
- 자세한 설명은 StackOverflow 이 글을 참고하세요.
오늘은 동영상 보면서 리팩토링 하는 부분에 초점을 둔 것 같네요. 내일은 '세션 및 같은 유저 확인'하는 부분의 중복 줄이는 방법과 step4 미션을 진행하는 것이 초점을 맞추어 계속 진행하려 합니다!
'TIL' 카테고리의 다른 글
Today's Dev Notes(2018-11-29) (0) | 2018.11.30 |
---|---|
Today's Dev Notes(2018-11-26) (0) | 2018.11.27 |
Today's Dev Notes(2018-11-22) (0) | 2018.11.22 |
Today's Dev Notes(2018-11-21) (0) | 2018.11.22 |
Today's Dev Notes(2018-11-19) (0) | 2018.11.19 |