Framework(Hybernate Validator | )

mo_on·2020년 12월 29일
0

JSP

목록 보기
4/5

Hybernate Validator Framework

Domain Layer의 검증 영역을 지원하는 Framework.
https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#preface

클라이언트의 요청을 validation이 어디서 이뤄져야 하는지 도식화한 구조이다. 3-Tier 구조 상에서 1,2,3tier가 모두 검증을 수행하는 상황이 발생했다. 떄문에 각각의 검증 수행 코드가 중복이라는 부담이 생기고, 해결하기 위해서 Domain Layer에 검증 코드를 지원한다.

@Data
@EqualsAndHashCode(of= {"mem_id", "mem_regno1", "mem_regno2"}) // 동일한 객체인 것을 확인할 땐
@ToString(exclude={"mem_pass", "mem_regno1", "mem_regno2"}) // 외부에 보여지지 않는 것
@NoArgsConstructor // 기본생성자
@AllArgsConstructor 
@Builder // 빌더패턴
public class MemberVO implements Serializable{
	private String mem_id;
	private transient String mem_pass; // 직렬화 대상에서 제외할 때 -> 외부로 보여지면 안될 때 transient
	private String mem_name;
	private transient String mem_regno1;
	private transient String mem_regno2;
	private String mem_bir;
	private String mem_zip;
	private String mem_add1;
	private String mem_add2;
	private String mem_hometel;
	private String mem_comtel;
	private String mem_hp;
	private String mem_mail;
	private String mem_job;
	private String mem_like;
	private String mem_memorial;
	private String mem_memorialday;
	private Integer mem_mileage;
	private String mem_delete;
	
	// member가 prod를 가지고 있는 관계가 형성된다. (일대다)
	// member has many prod 관계
	private List<ProdVO> prodList; 

JavaUtils.의 NotBlank를 어노테이션으로 붙여서 사용이 가능하다. (DB NotNUll)

  • 이메일은 형식 검증까지 필요하기 때문에 어노테이션으로 Email 형식 체크를 해준다.

빌더 패턴과 팩토리 오브젝트 패턴이 동시에 적용되어있다.

@BeforeClass
    public static void setUpValidator() {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        validator = factory.getValidator();
    }

ConstraintViolation => 검증을 위반한 property 하나의 정보를 가지고 있다. 이떄 Set은 Errors와 동일한 역할을 제공한다.

<MemberVO> Set<ConstraintViolation<MemberVO>> javax.validation.Validator.validate(MemberVO object, Class<?>... groups)

검증에 통과하지 못했다면, 결과 메세지가 필요하다.

groups : insert, update와 같이 하나의 property에 다른 검증을 해야할 때 사용

Annotation

시스템과 사람에게 일정 정보를 제공하기 위한 메타 데이터 표현 방식.

주석을 모두 달아놓고 저장하면 소스의 사이즈는 커지지만, 컴파일 하고 나면 주석이 포함되지 않아서 시스템에게 연결을 해주지 않는다.(annotation과 comment의 차이)

스티브 사우더스의 웹사이트 최적화 원칙

profile
개발 새발

0개의 댓글