optional이란_ null이 올수 있는 값을 감싸는 Wrapper클래스이다.
옵셔널로 받는 이유는 상황에 따라서 조회를 하면 무조건 리턴되는 데이터가 있는 것이 아니기 때문이다. 리턴된 데이터가 없으면 에러를 내줘야 하는 경우도 있고, 리턴된 데이터가 없으면 임의의 데이터를 추가해주아야 하는 경우도 있다. 따라Optional이 필요한 것이다.
@Service
@RequiredArgsConstructor
@Transactional(readOnly = true) // no flush
public class MemberService {
private final MemberRepository memberRepository;
@Transactional
public Long saveMember(Member member) {
return memberRepository.save(member).getId();
}
public Member findMember(Long id) {
return memberRepository.findById(id).orElse(() -> new BusinessException(MEMBER_NOT_FOUND));
}
}
@RequiredArgsConstructor
@Transactional(readOnly = true) // no flush
public class MemberService {
private final MemberRepository memberRepository;
@Transactional
public Long saveMember(Member member) {
return memberRepository.save(member).getId();
}
public Member findMember(Long id) {
return memberRepository.findById(id).orElse(() -> new BusinessException(MEMBER_NOT_FOUND));
}
}
'JAVA' 카테고리의 다른 글
오버라이딩 (0) | 2024.07.03 |
---|---|
Collection framwork의 정렬 메소드 탐구 (0) | 2024.02.24 |
abstract class (0) | 2023.07.10 |