자바 빈 유효성 검사에 대한 지식들 정리.
This JSR defines a metadata model and API for JavaBean validation. The default metadata source is annotations, with the ability to override and extend the meta-data through the use of XML validation descriptors.
-- specific goals, JSR 303
@Entity
public class Product {
@Id
@GeneratedValue
private Long id;
@NotEmpty
private String name;
@NotBlank
private String imageUrl;
}
JSR 303을 서두에 서술한 이유?
스프링 부트에서 유효성 검사를 위해 쓰이는 spring-boot-starter-validation
라이브러리는 자바 표준 bean validation을 따르기 때문에 짧게 정리했습니다. 시간이 나면 틈틈이 읽어보도록 해야겠습니다.
위의 샘플 코드에서 NotBlank 와 NotEmpty 어노테이션이 언급되어 나왔습니다. 두 어노테이션은 각각 어떤 기능을 제공하는지 간단히 서술하겠습니다.
(TMI) : NotBlank 어노테이션은 JavaEE 8 문서에 기록 되어있습니다.
Entity 개체 간의 데이터를 외부의 서비스나 컨트롤러로 보낼때 사용하는 자바 빈 객체를 말한다고 쓰여져 있습니다.
저는 DTO에 대해 잘 이해가 안갔어서 그리고 외부 개체와 데이터를 주고 받을때 왜 DTO가 필요한지 와닿지 못했습니다. 그래서 이것저것 문서도 찾아봤습니다.
https://martinfowler.com/eaaCatalog/dataTransferObject.html
요약하자면, DTO가 존재하는 이유는 원격으로 데이터를 주고받기 위함입니다.
저는 이걸 의존 주입(DI)와 혼동했는데, 전혀 다른 개념이였습니다. DTO는 말 그대로 외부 계층과 데이터 통신을 위해 쓰는 표현이였던 것 이예요. REST API처럼요.
일단, 손에 익은 다음에 이해를 하는 것으로 가야하겠습니다.
모르는 것이 너무 많네요.