Spring Data JPA - Null 처리

Spring Data JPA

백기선님의 강의인 Spring Data JPA 강의를 듣고 공부한 내용을 정리한 글

Null 처리하기

Spring Data 2.0 부터 자바 8의 Optional을 지원하고 있다.

  val byId: Optional<Comment> = commentRepository.findById(100L)
  assertThat(byId).isEmpty

자바에서는 가급적이면 Optional을 사용하여 Null처리할 것을 권장하고 있다.

코틀린에서는 Nullable Type이 존재하기 때문에 Optional보다 더욱 더 우아한(?) 코드를 작성할 수 있다는 장점이 있다.

  @Test
  fun collectionFindAll() {
  val findAll = commentRepository.findAll()
  assertThat(findAll).isEmpty()
}

콜렉션은 Null을 리턴하지 않고, 비어있는 콜렉션을 리턴하는 것을 명심하자.

@NoRepositoryBean
interface MyRepository<T, Id:Serializable>: Repository<T, Id> {
    fun <E:T> save(@NonNull entity : E): T
    fun findAll(): List<T>

    @Nullable
    fun <E: T> findById(@Nullable id: Id): Optional<E>
}

자바에서는 @Nullable, @NonNull과 같은 애노테이션을 사용해서 검증이 가능하다.

물론 코틀린은 이를 코드상에서 처리 가능하기 때문에 이런 애노테이션을 사용하지 않아도 괜찮다.

자바 개발시 꿀팁

인텔리제이가 스프링에서 지원하는 @Nullable, @NonNull를 제대로 인식하지 못하는 경우가 있다고 한다.

이를 해결하기 위해서,

runtime assertions로 검색해보면, Compiler 옵션이 보인다.

여기서 Configure annotations를 눌러서 스프링의 애노테이션을 추가해주면 IDE의 지원을 받을 수 있다.

Reference

인프런 백기선님의 스프링 Data JPA



© 2022. by minkuk

Powered by minkuk