조회 결과를 Optional로 받는 이유
·
Backend/Spring
JPA를 사용하다 보면 findById() 같은 조회 메서드의 반환 타입이 Optional인 것을 자주 보게 된다.처음 보면“그냥 엔티티를 바로 주면 되는 것 아닌가?”라는 생각이 들 수 있다.하지만 조회라는 작업은 본질적으로 결과가 있을 수도 있고, 없을 수도 있는 작업이다.바로 이 점 때문에 Optional이 필요하다. 조회는 항상 성공하는 것이 아니다데이터베이스 조회는 개발자가 기대한 대로 항상 값을 찾는 것이 아니다.예를 들어 다음과 같은 경우를 생각할 수 있다.사용자가 존재하지 않는 게시글 번호를 요청한 경우이미 삭제된 데이터를 조회한 경우잘못된 파라미터가 전달된 경우아직 저장되지 않은 식별자로 조회한 경우이런 상황에서는 조회 결과가 없을 수밖에 없다.즉, 조회 메서드는 구조적으로 다음 두 가지..
스프링 빈(Bean) 등록 방식 정리
·
Backend/Spring
스프링에서 가장 중요한 개념 중 하나는 빈(Bean)이다.빈은 단순한 자바 객체가 아니라, 스프링 컨테이너가 생성하고 관리하는 객체를 의미한다.즉, 객체는 그냥 new로 만든 것이고,빈은 스프링이 대신 만들어서 관리하는 객체다. 빈은 어떻게 등록하는가스프링에서 빈을 등록하는 방법은 하나가 아니다.대표적으로 다음 3가지 방식이 있다.컴포넌트 스캔 (자동 등록)@Bean을 이용한 수동 등록XML 등록중요한 포인트는 이것이다.모든 빈을 하나의 방식으로 통일하는 것이 아니라,상황에 따라 적절한 방식을 선택해서 사용한다. 컴포넌트 스캔 (자동 등록)가장 많이 사용하는 방식이다.@Servicepublic class TodoService {}@Repositorypublic class TodoRepository ..