Spring Data Repository 확장 (짧음)Back-end/Spring Boot, JPA2023. 12. 13. 02:35
Table of Contents
종종 Spring Data 스택을 사용하다 보면
어떤 Entity Repoistory 던간에 자주 사용하는 기능이 나오기 마련이다
나의 경우 토이를 할때 Kotlin을 자주 사용하는데
ID에 의한 찾은 값의 반환타입이 Optional 보다는 nullable Entity 인게 편한 경우가 많았다
왜냐하면 Elvis Operator를 사용하는게 보다 간단하다고 생각했기 때문이다
val notNullObject = nullableObject ?: throw RuntimeException("null이 될 수 없습니다.")
이때 사용하면 좋은 심플한 트릭이다
Spring Data Repository 확장하기
확장할 Repository에서 구현하고자 하는 메서드만 기술한다
interface ExtendedCrudRepository<T, ID>: CrudRepository<T, ID> {
fun findByIdOrNull(id: ID): T? {
val optionalEntity: Optional<T> = findById(id)
return optionalEntity.orElse(null)
}
}
그리고 구현한 Repository를 사용한다
interface LockRepository : ExtendedCrudRepository<Lock, String> {
}
Client Code
그러면 아래와 같이 사용할 수 있다
val lock = repository.findByIdOrNull(lockId) ?: throw LockException("Lock이 존재하지 않습니다.")
'Back-end > Spring Boot, JPA' 카테고리의 다른 글
Quiz! 다음 코드에서 JPA가 실행하는 Query는? (0) | 2024.04.04 |
---|---|
[땅굴 조사] JPA 트랜잭션이 수행되기까지 (0) | 2024.02.01 |
Thread Safe하게 처리해보자 (feat. synchronized , 낙관, 비관, named) (0) | 2023.06.27 |
ArgumentResolver처리 과정 + Spring Web MVC 흐름 (0) | 2023.06.20 |
Argument Resolver 등록 관련 디버깅 (feat. Spring MVC 흐름) (0) | 2023.06.20 |
@philo0407 :: Philo의 다락방
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!