개발 47

Spring Boot - Validation

Spring Boot는 @Valid 어노테이션이 달린 argument를 찾으면 기본 JSR 380 구현 모듈인 Hibernate Validator를 자동으로 부트스트랩하고 argument의 유효성을 검사한다. 타겟 argument가 유효성 검사를 통과하지 못하면 Spring Boot는 MethodArgumentNotValidException 예외를 발생시킨다. @ExceptionHandler 어노테이션을 사용하면 단일 메서드를 통해 지정된 타입의 예외를 처리할 수 있다. 따라서 유효성 검사 오류를 처리하는 데 사용할 수 있다. /* *이 메서드는 각각의 invalid 필드의 이름과 (유효성 검사 된) 오류 메시지를 Map에 저장한다. *그런 다음 이후 처리를 위해 Map을 JSON 형식으로 클라이언트에 ..

개발/Spring 2023.01.24

Hibernate Validation - Custom constrains

Jakarta Bean Validation API는 표준 제약 조건 주석의 모든 세트를 정의한다.기본 제약 조건이 충분하지 않은 경우특정 유효성 검사 요구 사항에 맞는 사용자 지정 제약 조건을 쉽게 만들 수 있다.Creating a simple constraint제약 조건 어노테이션 만들기validator 구현하기default 에러 메시지 정의하기Step 1. 제약 조건 어노테이션 만들기 - Define the actual constraint annotation.@interface 키워드를 통해 어노테이션 타입으로 정의한다.public @interface CheckCase { String message() default "{org.hibernate.validator.referenceguide.cha..

개발/일지 2023.01.23

[Design Pattern] State Pattern (상태 패턴)

What is a State design pattern? 객체가 (객체의) 현재 내부 상태에 따라 다르게 동작한다. 별도의 클래스에서 상태 별 동작을 정의한다. 클래스에 정의된 작업은 해당 동작을 구현한 현재 상태 객체에게 위임한다. 상태 전환은 상태 자체에 의해 트리거될 수 있으며, 이 경우 각 상태는 적어도 하나의 다른 상태의 존재에 대해 알고 있다. 이 패턴의 이점은 메인 클래스를 변경하지 않고도 새로운 상태와 새로운 동작을 추가할 수 있다는 것이다. Role Context 현재 상태의 (상태) 클래스 클라이언트 코드는 이 상태 클래스와 작업한다. 현재 상태에 작업을 위임한다. State 객체의 상태를 대표하는 객체들을 위한 인터페이스 소유 객체가 호출하는 작업을 정의한다. Concrete Stat..

Java Bean Validation

Jakarta Bean Validation Specification어노테이션을 이용해 validation을 처리할 수 있는 방법 Bean ValidationBean 유효성 검사는 JavaBean 유효성 검사를 위한 메타데이터 모델과 API를 정의한다.메타데이터 소스는 XML 유효성 검사 디스크립터를 사용하여 메타데이터를 재정의하고 확장하는 기능이 있는 주석이다.* 디스크립터: 데이터 분류에 사용되는 단어나 구JavaBean은 직렬화가 가능해야하고 매개변수가 없는 생성자를 가지며 getter와 setter 메서드를 사용해 프로퍼티에 접근할 수 있어야 한다. Validating data는 프레젠테이션 계층에서 퍼시스턴스 계층까지 모든 어플리케이션 계층에 걸쳐 발생하는 공통 작업이다.시간이 많이 걸리고 오류가..

개발/일지 2023.01.11

JPA 객체 매핑

JPA를 사용하려면 클래스와 테이블을 매핑해야 한다. @Entity 해당 클래스를 테이블과 매핑한다고 JPA에 알려준다. 엔티티 클래스라고 한다. @Table 엔티티 클래스에 매핑할 테이블 정보를 알려준다. name 속성을 사용해서 테이블과 매핑한다. 어노테이션을 생략하면 엔티티의 이름을 테이블 이름으로 사용한다. @Id 엔티티 클래스의 필드를 테이블의 기본 키(PK)에 매핑한다. 식별자 필드라고 한다. @Column 필드를 컬럼에 매핑한다. name 속성을 사용해서 엔티티 클래스의 필드와 테이블의 컬럼에 매핑한다. 매핑 정보가 없는 필드 매핑 어노테이션을 생략하면 필드명을 사용해서 컬럼명으로 매핑한다. * 만약 대소문자를 구분하는 데이터베이스를 사용한다면 명시적으로 매핑해야 한다. Member 클래스와..

개발/JPA 2023.01.11

빈 생명주기 콜백 (Bean LifeCycle Callback)

스프링의 IoC 컨테이너는 Bean 객체들의 의존성을 관리한다. LifeCycle(생명주기) : 생성부터 소멸까지 객체를 관리 == 객체의 LifeCycle을 관리한다. -> 스프링의 IoC 컨테이너는 개발자 대신 객체(Bean)의 LifeCycle을 관리한다. -> 객체 관리의 주체는 Spring Framework(IoC Container)가 되기 때문에 개발자는 로직에 집중할 수 있다. 빈 생명주기 스프링 컨테이너 생성 빈 객체 생성 의존 설정 초기화 (콜백) 빈 사용 빈 소멸 (콜백) 스프링 컨테이너 종료 스프링 컨테이너는 빈 객체를 생성하고 의존 주입을 통해 의존을 설정한다. 의존 자동 주입을 사용한다면 이 시점에 의존 주입이 수행된다. 의존주입이 모두 완료된 다음에 초기화 작업이 일어난다. 이 ..

개발/Spring 2022.12.27