210318 목 TIL

bongf·2021년 3월 18일
0

TIL

목록 보기
22/40

✔ Done

  • 마스터 수업 듣기
  • 미션3

📂 Feeling

  • Custom 예외를 만들면 불필요한 클래스들이 많이 생기는 문제 + 표준 예외를 사용할 때 보다 다른 이들이 이해하기 어려움으로 미션에서 최대한 표준 예외를 발생시키려고 시도했다.
  • 그러나 try catch가 많아지고 이를 @ExceptionHandler로 처리하라는 피드백을 받으면서
    - 예외의 발생시 각 상황별로 다른 처리를 해주고 싶은데(ex. 로그인 실패 -> 로그인 페이지, 잘못된 접근 -> 홈페이지) @ExceptionHandler는 예외의 종류에 따라 다른 처리 방식이다 보니 처리해주고 싶은 결과에 따라서 다른 종류의 예외를 사용하게 되었다.
    • 그러다 보니 예외의 의미를 알 수 없는 사용이 늘어나 결국 예외 의미를 명확하게 해주기 위해 custom 예외를 만들어주게 되었다.
    • 일반적으로는 이와 같은 경우 어떻게 처리하는지 궁금하다

Good

Bad

✔ TODO

  • 오늘 K가 JPA에서 쿼리문을 직접 쓰면 안되는 이유를 알려줬다. 더 학습하고 정리해야 겠다. (#todo)

🗒 Learned

1) lob

  • 출처 https://www.youtube.com/watch?v=GvVFQom_SGs
  • String으로 하면 데이터 베이스에서 디폴트로 255자의 제한을 둔다
  • 컨텐츠와 같이 255자가 넘는 경우에 @Lob하면 상당히 긴 컨텐츠 추가할 수 있다.
    https://docs.oracle.com/javaee/6/api/javax/persistence/Lob.html

    @Lob
    컨텐츠의 길이가 너무 길 경우 바이너리 파일로 DB에 바로 밀어 넣어야 하는데, 보통 이런 경우에 사용한다.
    공통적으로 @Lob으로 사용하면 된다.
    CLOB, BLOB 매핑
    CLOB : String, char[], java.sql.CLOB
    BLOB : byte[], java.sql.BLOB

출처: https://ict-nroo.tistory.com/113
https://docs.oracle.com/cd/B19306_01/appdev.102/b14249/adlob_intro.htm

2) 3tier architecture

2-1) 왜학습?

  • Repository - Service - Controller의 로직으로 서비스를 구현하고 있었는데 이는 김영한님의 강의를 들으면서 일반적으로 이렇게 한다는 말을 듣고 불과했다.
  • 이 때문에 팀 코드리뷰 시간에 각 파트가 맡아야 될 일들이 혼재되어있다는 피드백을 받고 수정해 보려고 했다.
  • 참고로 여기 있는 자료들은 대부분 K가 준 자료들이다. 감사합니다 :)

2-2) 객체지향 디자인에서 아래 4layer가 가장 일반적이다

  • 출처 https://en.wikipedia.org/wiki/Multitier_architecture
    1. Presentation layer (a.k.a. UI layer, view layer, presentation tier in multitier architecture)
    2. Application layer (a.k.a. service layer[5][6] or GRASP Controller Layer [7])
    3. Business layer (a.k.a. business logic layer (BLL), domain layer)
    4. Data access layer (a.k.a. persistence layer, logging, networking, and other services which are required to support a particular business layer)
  • 지금 내가 사용했던 것은 2.Controller - 3.Service - 4. Repository로 사용했음을 알게 되었다.

3) “엔티티는 반드시 파라미터가 없는 (no-arg) public 또는 protected 생성자가 있어야 한다.”

https://goodyhlee.wordpress.com/2016/06/20/177/
https://wbluke.tistory.com/6
http://blog.eomdev.com/ddd/2019/02/17/ddd-setter-default-constructor.html

4) 헤로쿠 타임존 설정

5) @ContorllerAdvice와 @ExceptionHandler

5-1) Spring 예외처리

https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

profile
spring, java학습

0개의 댓글