1. enum 비교 시 equles 대신 == 를 사용해야하는이유.
- == 는 null safe 합니다.
- equals는 내부적으로 == 를 사용하여 비교합니다.
2. soft delete 를 사용하는 엔티티의 삭제 구현하기
- soft delete 는 엔티티를 직접삭제하는 것이 아니라, isdeleted/isremoved 와 같은 value 값을 전환함으로서, 레코드는 그대로 두고 삭제를 구현하는 것이다.
- 본래는 엔티티의 is_delete 값을 업데이트 하고 save함으로서, 처리를 하였는데 @SQLDelete 라는 것을 사용하게 되면 로우쿼리를 날려, softdelete 를 구현할 수 있다. 아래와 같이 표현한다.
@SQLDelete(sql = "UPDATE user SET is_deleted = true WHERE id = ?")
3. soft delete 엔티티를 제외하고 조회하기
- soft delete 를 사용할 때, 굳이 is_delete 된 것을 조회하고 싶지 않을 수도 있고, 굳이 JPA문법을 이용해 매번 조건을 붙히기 귀찮은 경우도 있다. 이럴땐 @Where 절을 이용하여, 특정 컬럼에 대한 필터링을 할 수 있다.
- 하지만, 만약 delete 된 값을 불러오고 싶다면, native쿼리를 사용하거나(@Query), @FilterDef와 @Filter 를 사용하면 된다고 한다.
4. 코드리뷰지옥
오늘은 하루종일 코드리뷰를 주고받으면서, 악취를 걷어냈다. 우리조에 JPA 고수가 계셔서 많은 도움을 받았다. 계속 대응하다보니 어느새 40개가 넘는 개선 사항이 쌓였다. 악취가 많이 난다는 뜻이겠지.. 확실히 혼자하는 것 보다 같이 함으로서 얻어가는게 많은 것 같다.