스프링 부트 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개의 댓글

관련 채용 정보