본문 바로가기
TIL & WIL

[TIL] #68. 231120

by mmm- 2023. 11. 20.

어제 목표 & 오늘 완료한 한 일 

  • 알고리즘 문제
  • 자바 종합 문법 복습 (3주차)
  • 스프링 숙련 강의 (2주차)
  • 스프링 숙련 개인과제


내일 목표

  • 알고리즘 문제
  • 자바 종합 문법 복습 (3주차)
  • 스프링 숙련 강의 (2주차)
  • 스프링 숙련 팀 프로젝트
  • 스프링 숙련 개인과제

오늘 배운 내용

강의

2023.11.20 - [내일배움캠프(Sparta)/Spring] - [Spring] Entity 클래스 간의 관계

 

[Spring] Entity 클래스 간의 관계

외래키의 주인 정하기 외래키의 주인 ➡️ 등록, 수정, 삭제 가능 (관리) 외래키 주인 X ➡️ 읽기만 가능. @JoinColumn() : 외래키의 주인이 활용하는 annotation으로, 컬럼명, null 여부, unique 여부 등을

mstudy-recode.tistory.com

 

발생한 문제와 해결

1️⃣. 

nested exception is org.hibernate.MappingException: Column 'contents' is duplicated in mapping for entity .....

이와 같은 에러가 발생했다. 에러메시지에 적혀있던 클래스로 이동하여 살펴봤더니 complete의 @Column name 옵션을 작성할 때 오타가 있어 발생한 에러였다. 제대로 수정해주었더니 에러가 해결되었다.
 

느낀점

원래 API를 설계할 당시, 할일 수정과 완료 api가 똑같고 HTTP Method도 PUT으로 같았다. 그런데 코드를 작성하면서 이렇게 하는 게 옳지 않은 방법이라는 것을 깨닫게 되었다. 그런데 전에 api에 해당하는 동작을 포함하면 좋지 않다는 것을 본 적이 있어 어떻게 해야할까 고민을 해봤다. 고민한 결과, 수정은 PUT으로, 완료는 PATCH로 하자는 결론이 내려졌지만 이게 올바른 것인지, 아니라면 어떤 것이 옳은 건지는 아직 찾아보지 못해 추후에 이 부분에 대해서 공부해볼 생각이다.
알고리즘 스터디를 하면서 StringBuilder를 사용하여 문제를 풀어봤는데, StringBuilder를 사용하지 않고 String으로 문제를 풀었을 때와 실행시간이 굉장히 많이 차이가 났다. String을 이용해서 문제를 풀었을 때는 한 개의 for문을 추가적으로 사용했고, StringBuilder를 사용하여 문제를 풀었을 때는 reverse를 사용해 문자를 뒤집어줬다. 이 둘의 차이인지 궁금하여 찾아본 결과, for문을 한 번 돌리는 것과 reverse()를 사용하는 두 경우 모두 시간복잡도가 O(n)이라고 한다. StringBuilder를 사용하면 Stirng에 비해 메모리 사용을 최적화할 수 있어 문자열 조작이 많은 상황에서 사용하면 좋다는 것은 알고 있었지만, 실제로 확인해보니 생각한 것보다 더 효율성이 높다는 것을 알고 놀랐다.

'TIL & WIL' 카테고리의 다른 글

[TIL] #70. 231122  (0) 2023.11.22
[TIL] #69. 231121  (0) 2023.11.21
[WIL] #10. 231113~21119  (0) 2023.11.19
[TIL] #67. 231119  (0) 2023.11.19
[TIL] #66. 231118  (0) 2023.11.19