스프링 부트 2.5부터 getOne()이 Deprecated 되어버림!? + Optional을 쓰는 이유

myminimin·2023년 9월 18일
0

Spring/Springboot

목록 보기
16/21

코드로 배우는 스프링 부트 구판, 신판 둘 다 공부중인데 구판을 실습하는 중 getOne()을 사용하는 과정에서 오류가 발생했다.

왜냐하면 getOne()이 스프링 부트 2.5부터는 더이상 사용하지 않기 때문..... (이런 오류가 발생했다)


그래서 실습 코드 중
Board board = repository.getOne(boardDTO.getBno()); 를

Optional<Board> result = repository.findById(boardDTO.getBno()); 으로 변경을 해줬다.

이번에는 findById로 변경을 하니 board의 값을 찾지 못하고 오류가 발생했다. (당연하다 board 타입으로 바로 받았던 걸 finaById는 Optional으로 받아야 하니까...)


이렇게 board에 직접 result의 값을 넣어서 해결 완료!


문득 왜 꼭 fineById()는 Optonal로 리턴타입을 감싸줘야 하는걸까? 하는 의문이 들었다.

검색을 해보니 CrudRepository 때문이라고 하는데 (🤔?)

일단은 Repository 인터페이스를 만들 때 JPA 관련된 것을 사용하기 위해서 JpaRepository를 상속 받았던 걸 기억해보자.

바로 그 JpaRepository 인터페이스에서 find와 관련된 메서드를 알기 위해서는 CrudRepository를 확인하라고 적혀져 있다!

그리고 CrudRepository 인터페이스로 가보면 findById()의 리턴값이 Optional 타입으로 고정이 되어 있다!!!

업로드중..


Optional을 쓰면 좋은 점은 여기로....

0개의 댓글