Entity 클래스에 다음과 같은 코드가 있다고 하자.
public class Company {
@Column("seq")
private Integer seq;
...
@OneToMany(cascade = {CascadeType.PERSIST}, fetch = FetchType.LAZY, mappedBy = "user")
@JoinColumn(name = "seq")
private User user;
}
그리고 Service 클래스에는 다음과 같은 코드가 있다.
Company company = companyRepository.findBySeq(5);
if (company.getUser() == null) {
throw new IllegalArgumentException("no user data");
}
...
Service 클래스의 코드에서 과연 null 체크가 필요할까?
결론적으로 Service 클래스에서 해당 join 한 객체에 대해서는 null 체크를 명시적으로 할 필요가 없다.
우선 lazy loading 이기 때문에 getUser() 를 할 시에 null 이면 hibernate 에서 exception 을 낸다고 하드라.
그래서 따로 null 처리는 안해도 되고 try-catch 를 해야할 듯 하다.
반응형