본문 바로가기

TIL

TIL) 깃 충돌, 예외 처리 전략, @CreatedDate vs @CreationTimeStamp

1. 깃 병합 충돌

오늘 깃에대한 수업을 진행하면서, 로컬에서 딴 task 브랜치를 로컬의 main 브랜치로 merge 할때 충돌이 나게끔 해서 보여드리려 했는데

 

그냥 task 의 내용이 main 을 덮어써버렸다.

 

찾아보니, 병합충돌은 리모트 브랜치와 로컬 브랜치사이에 병합하려 할때 일어난다고 한다. 처음 알았다..

 

 

추가로 깃에 대해 수업준비 하면서 알게된 재밌는 부분은, 리눅스를 만든 사람이 깃을 만들었다는 것 (이전에 들은적이 있었는데 까먹었었음), 아폴로 11호의 코드가 깃허브에 모두가 볼 수 있게 올라가있다는것들이었다 ㅋㅋ

 

 

 

2. 예외 처리 전략

이 부분에 대해서는 같이 스터디를 진행중인 Cheese.yun 님 블로그 도움을 많이 받았다.

https://cheese10yun.github.io/spring-guide-exception/

 

Spring Guide - Exception 전략 - Yun Blog | 기술 블로그

Spring Guide - Exception 전략 - Yun Blog | 기술 블로그

cheese10yun.github.io

 

 

현재 작업중인 코드 명세가 성공, 실패시 모두 공통적인 부분이 있어서,

CommonResponse 객체를 만들고, 각각의 성공 Response Dto 와 에러 Response 하나를 만들고,

에러메세지, http 상태코드, 에러코드를 관리하는 Enum 을 만들었다.

이후 Error Response 객체에서 에러코드를 받아 셋팅하는 정적 메서드를 만들어 사용하였다.

 

예외같은 경우에는 RuntimeException 을 상속하는 최상위 BusinessException 을 정의하고,

이를 상속받아서 예외를 만들어서, BusinessException 으로 @ExceptionHandler 가 모두 받아서 처리할 수 있도록 하였다.

 

 

 

3. @CreatedDate vs @CreationTimeStamp

 

@CreationTimeStamp

@UpdateTimeStamp
그냥 필드에 선언해놓으면 됨.
하이버네이트 에너테이션이다.


@CreatedDate 
Spring Auditing 이다.

고로, 스프링에서 제공한다.
@EnableJpaAuditing 필요.
@EntityListener 도 필요

 

기능적인 차이는 없다.

 

단지 (사실 JPA 의 구현체를 하이버네이트에서 다른 것으로 바꿀 일도 없겠지만,) 하이버네이트의 의존성보다는

스프링 자체 에너테이션을 쓰는 것이 나을 것 같다.