Kotlin 을 사용하며 기록

정명진·2023년 5월 21일
0
post-custom-banner
  1. @RedisHash를 사용한것.

@RedisHash를 사용하면 JPA 처럼 엔터티를 만들고 사용자가 지정한 @Id를 통해 redis repository를 호출해 save만 하면 자동으로 insert를 해준다. 전 프로젝트에서는 이 기능을 몰라서 직접 redis에 저장하고 그랬는데 편리한 기능인것 같다.(토큰 관리용으로)

@RedisHash(value = "refresh_token")
class RefreshToken (
    @Id
    @Indexed
    var id: String,
    var token: String
)
# redis에서 키 호출하기
hgetall refresh_token:026e9561-e26b-4ffa-b343-bb2f6a2f7a14

# result
1) "token"
2) "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhYmNAdGVzdC5jb20iLCJpYXQiOjE2ODQ2NzI3NDh9.pOEtpo3M5GX_NIG3dhnDIrxqcJbEvFg-CJ9mMFU4JB8"
3) "id"
4) "026e9561-e26b-4ffa-b343-bb2f6a2f7a14"
  1. JPA non-nullable vs nullable
    A 라는 타입이 있을때 처음에 null type으로 지정하지 않고 fun method() : A 로 지정을 했을때 해당 값이 null 이면 EmptyResultDataAccessException 이 발생했다.
    하지만 나는 해당 메소드를 호출했을때 다른 익셉션과 구별해서 적용을 해야 했기에 nullable로 받고 null일때 처리를 하기 위해 fun method() : A?로 수정했다.
method()?.let { userMapper.mapToDomainEntity(it) }?: throw ApiException(404, "Email not existed...")

이런식으로...
여기서 코틀린은 null safety 한 언어인데 null을 왜 사용하냐는 생각이 들 수 있으나, 자바는 모든 타입을 null로 지정할 수 있어서 문제였지만 코틀린에서는 개발자가 null로 쓸 애들만 null type이 가능하다고 지정해 줄 수 있기 때문에 나는 nullable을 쓰는게 나쁘지 않다고 생각한다.. 나중에 생각이 바뀔 수 있지만 일단 현 시점 느낀점은 이렇게 기록을...

profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..
post-custom-banner

0개의 댓글