728x90
BookRepository
interface BookRepository : JpaRepository<Book, Long> {
fun findByName(bookName: String): Optional<Book> //코틀린에서는 Optional이 필요 없다
}
- 코틀린에서 상속은 : 연산자 뒤에 쓰면 된다.
- Optional 같은 경우 코틀린에서 더 이상 사용하지 않아도 된다 (? 연산자를 사용하면 null을 허용하는 타입이 되기 때문)
- 현재는 JAVA에서 그대로 사용하기 위해, Optional을 사용했다.
UserRepository
interface UserRepository : JpaRepository<User, Long> {
fun findByName(name: String): Optional<User>
}
UserLoanHistoryRepository
interface UserLoanHistoryRepository : JpaRepository<UserLoanHistory, Long> {
fun findByBookNameAndIsReturn(bookName: String, isReturn: Boolean): UserLoanHistory?
}
- findByBookNameAndIsReturn 같은 경우 UserLoanHistory가 반환이 될 수도 되지 않을 수도 있기 때문에 ? 연산자를 사용해 null이 올 수 있다는 것을 표기한다(널 허용)
728x90
'실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기' 카테고리의 다른 글
| Ch02. Java 서버를 Kotlin 서버로 리팩토링하자 - DTO,Controller를 Kotlin으로 변경하기 (0) | 2022.11.01 |
|---|---|
| Ch02. Java 서버를 Kotlin 서버로 리팩토링하자 - 서비스 계층 Kotlin으로 변경하기 (0) | 2022.11.01 |
| Ch02. Java 서버를 Kotlin 서버로 리팩토링하자 - Kotlin과 JPA를 함께 사용할 때 주의할 점 (0) | 2022.11.01 |
| Ch02. Java 서버를 Kotlin 서버로 리팩토링하자 - Domain 계층 리펙토링하기 (0) | 2022.11.01 |
| Ch01. 도서관리 애플리케이션 리팩토링 준비하기 - JUnit5으로 Spring Boot 테스트 하기 (0) | 2022.10.29 |