Controller 계층 역할

Untitled

Controller 계층은 프레젠테이션 계층으로 View 에 관한 로직을 갖는다. 서비스 계층에서 받아온 데이터를 사용자에게 전달하거나, 사용자에게 받은 데이터를 비즈니스 계층에게 준다. Controller 에서 다른 동작이 없도록 수정하였다.

Spring been validation

Untitled

Spring Bean Validation

스프링에서 값에 대한 검증을 도와주는 어노테이션이 있다. Spring Bean Validation 을 이용하여 값에 대한 검증을 간단하게 하였다.

DTO 생성자

Untitled

dto 는 다른 계층에게 데이터를 전달하기 위한 객체이다. 비즈니스 로직을 가지지 않는다. 값을 전달하는 것 이외에 다른 역할이 있으면 안된다고 생각하여 도메인 객체를 받는 생성자에 대해 생각해보지 못했다. 도메인에서 dto 를 알고 있다면 문제가 되지만, dto 는 결국 도메인 객체에 저장된 값을 전달해준다. dto 에서 도메인에 대해 알고 있는 것이 괜찮다고 생각하여 생성자를 추가하였다.

@Transactional

Untitled

@Transactional

Service 계층에서는 DB 에 접근하는 DAO 와 연결되어 있다. 하나의 기능을 처리하기 위해 여러개의 쿼리문을 실행할 수 있다. 앞의 쿼리문에서 실패할 경우 메서드의 기능은 실패했으므로 데이터에 영향이 있으면 안된다. 변경된 데이터를 ROLLBACK 시키기 위해 Service 계층에서는 @Transactional 을 붙여준다.

Controller 에서의 도메인 객체 사용

Untitled

Controller 는 비즈니스 로직을 가지지 않으며 그저 자바 어플리케이션과 사용자를 연결하는 역할을 한다. 도메인 객체에 관해 수정사항이 발생하면 Controller 가 도메인을 활용하지 않아도 Controller 를 확인해야 한다. 각 역할에 맞는 객체에만 접근하도록 코드를 구성하면 수정사항이 발생해도 확인해야 하는 범위가 줄어들 수 있다.

Service 테스트

Untitled