[TIL] 220901

Ariul·2022년 9월 1일
0

Today I Learned 🌳

목록 보기
11/13
post-thumbnail

FACT

  • 찜하기 기능을 구현했다.
  • Post 엔티티의 level과 heartNum의 데이터 타입을 Long에서 int로 변경했다.
  • Post 엔티티의 tagList와 ingredientsList 필드를 String으로 변경했다.

FEELING

  • 이로써 4주 연속 찜하기(좋아요) 기능 구현 달성!(ㅋㅋㅋㅋㅋㅋㅋㅋ)
    매주 Request, Response가 달라서 구현할 때마다 새로운 느낌이었지만 v4까지 만들고 보니 점점 발전한 느낌이 든다.
    간단히 비교해 보면,

    v1: 온갖 DTO 사용. 게시글 좋아요 기능에 DTO 3개 ⇒ 게시글, 댓글, 대댓글까지 좋아요 기능 넣으면 총 DTO 9개😹
    v2: v1와 크게 다르지 않음.
    v3: DTO는 줄었지만 나 말고는 아무도 이해 못 하는 희한한 로직으로 구현
    v4: DTO도 줄고 나름 누구나 이해는 할 수 있을만한 로직으로 구현

    v1부터 v4까지의 일대기를 한번 적어봐야 하나~ 코드 비교 및 리팩토링..!?

  • Post 엔티티의 tagList와 ingredientsList의 필드값이 List라서 검색 기능을 담당하시는 팀원 분이 힘들어하셨다. String이 아니면 쿼리를 쓰기도, 여러 키워드를 한 번에 검색하기도 어렵다고 한다. 커스텀 컨버터까지 만들어서 DB에는 String이 저장되도록 했는데, 이걸로도 안 되나 보다.. 그래서 Converter 만든 거 과감히 포기하고 필드값을 다 String으로 변경했다! (프론트에서 받을 때는 리스트로 받음!)
    아오 쿼리도 모르고 DB도 모르니까 의견을 내기도, 코드 짤 때 도움을 드리기도 어렵다😶‍🌫️ 마침 DB 공부하려고 주문한 책이 도착했는데 빨리 공부 시작해야겠다.


FINDING

  • Java에서 데이터 타입을 지정했더라도 DB에서 Modify Column으로 컬럼타입을 변경할 수 있다.
    즉 실제로 Java에서 정해진 데이터 타입보다 큰 값이 들어왔다면 DB에서 컬럼타입을 변경하여 값을 받을 수 있다는 것! 근데 내가 생각해야 했던 건 반대의 경우였다.
    ERD 설계 시 level과 heartNum의 데이터 타입을 Long으로 줬는데, 아무리 생각해도 Long까지 써야 하나? 라는 생각이 들었다. DB에서 데이터 타입을 변경할 수 있다고 해서 아무렇게나 사용하는 것보다, 불필요한 메모리 사용을 줄이기 위해 Java 데이터타입을 모두 int로 변경했다.

FUTURE ACTION

  • 공통 응답 바디 + 공통 익셉션 처리
  • 도서 '데이터베이스 첫걸음' 읽기
profile
정성과 진심을 담아 흔적을 기록하자💡

0개의 댓글