Java Bean Validation

bloomspes·2021년 9월 9일
0

자바 빈 유효성 검사에 대한 지식들 정리.

JSR 303

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

  • 자바 어플리케이션 개발자들의 Java bean validation 규칙에 대한 문서.
  • Bean Validation 명세가 JSR 380까지 나와있다.
  • Bean Validation은 어노테이션을 사용해서 아래와 같이 제약조건을 명시한다.
@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을 따르기 때문에 짧게 정리했습니다. 시간이 나면 틈틈이 읽어보도록 해야겠습니다.

Package javax.validation.NotBlank

위의 샘플 코드에서 NotBlank 와 NotEmpty 어노테이션이 언급되어 나왔습니다. 두 어노테이션은 각각 어떤 기능을 제공하는지 간단히 서술하겠습니다.

(TMI) : NotBlank 어노테이션은 JavaEE 8 문서에 기록 되어있습니다.

  • NotEmpty : Null, 빈 문자열 사용 불가.
  • NotBlank : Null, 빈 문자열, " " 사용 불가.

Data Transfer Object(DTO)

Entity 개체 간의 데이터를 외부의 서비스나 컨트롤러로 보낼때 사용하는 자바 빈 객체를 말한다고 쓰여져 있습니다.

저는 DTO에 대해 잘 이해가 안갔어서 그리고 외부 개체와 데이터를 주고 받을때 왜 DTO가 필요한지 와닿지 못했습니다. 그래서 이것저것 문서도 찾아봤습니다.

https://martinfowler.com/eaaCatalog/dataTransferObject.html

요약하자면, DTO가 존재하는 이유는 원격으로 데이터를 주고받기 위함입니다.

저는 이걸 의존 주입(DI)와 혼동했는데, 전혀 다른 개념이였습니다. DTO는 말 그대로 외부 계층과 데이터 통신을 위해 쓰는 표현이였던 것 이예요. REST API처럼요.

일단, 손에 익은 다음에 이해를 하는 것으로 가야하겠습니다.
모르는 것이 너무 많네요.

profile
Software Developer

0개의 댓글