본문 바로가기

study/java

엉터리 정리 - map(), orElseGet()

스프링 부트 프로젝트에서 클라이언트 요청을 처리하는 메소드를 작성할 때, map() 메소드와 orElseGet() 메소드를 자주 사용한다.

 

map()은 stream 클래스의 메소드다

stream의 메소드 map()
파파고님의 해석

간단히 요약하면, 스트림을 매개변수로 받고 함수(메소드)를 적용해 스트림을 반환하는 함수이다.

 

DB에서 데이터를 꺼내고 처리할 때 많이 사용한다.

 

 

orElseGet()은  Optional 클래스의 메소드다. 스프링에선 DB에서 데이터를 꺼낼 때, 찾는 데이터가 없을 경우가 있기 때문에 Optional 타입으로 꺼낸다.

Optional 타입 데이터가 null 값을 갖는 경우, 전달된 함수를 실행시키고, 그 리턴값을 저장한다.

 

 

두 메소드의 사용 예. DB에서 데이터를 꺼내 처리할 때 사용한다. 람다식을 통해 데이터를 처리하고 반환한다

Optional<User> optional = userRepository.findById(id)
	.map(user -> Header.OK(user))
	.orElseGet(() -> Header.ERROR("데이터 없음"));