Optional
01 Aug 2018Optional의 역할
값이 null이 될 수 있음을 명시적으로 표현함으로써 메서드의 시그니처만으로 선택형 값인지 구분할 수 있다.
(따라서 모든 null 참조를 Optional로 대치하는 것은 바람직하지 않다.)
Optional이 등장하면 값이 없을 수 있는 상황에 적절하게 대응하도록 강제할 수 있다.
Optional과 Serializable
java.util.Optional은 Serializable 인터페이스를 구현하지 않았다. 따라서 엔터티 속성을 Optional로 매핑해서는 안된다. 대신 getter 메서드에 Optional을 사용한다.
@Entity
public class PostComment implements Serializable {
@Id
@GeneratedValue
private Long id;
private String review;
@ManyToOne(fetch = FetchType.LAZY)
private Post post;
@ManyToOne(fetch = FetchType.LAZY)
private Attachment attachment;
public Optional<Attachment> getAttachment() {
return Optional.ofNullable(attachment);
}
public void setAttachment(Attachment attachment) {
this.attachment = attachment;
}
...
}