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