ModelMapper 라이브러리: DTO->VO, VO-> DTO 로변환.
DTO는 getter/setter를 사용하지만 VO의 경우 getter만 사용하고 있으므로 이를 변환해서 처리하기 위해 ModelMapper 라이브러리를 통해 변경해서 사용하도록 한다.
개발 순서 DAO-> Service -> Controller
순서로 진행하는것이 일반적이다.
/todo/read?tno=12
VO(Value Object) : 주로 시스템 내부에서 사용되며, 불변성을 유지하기 위해서 설계된다. 주로 데이터베이스와의 상호작용에 사용되는데, 도메인 모델을 표현하기 위해 사용되고 비즈니스 로직을 포함할수 있다.
DTO(Data Transfer Object): 주로 시스템 간의 데이터 전송에 사용된다. 프레젠테이션계층과 서비스 계층 사이에서 데이터를 전송하기 위해 사용된다.
VO는 불변성을 지니는것이 이상적이긴하지만, 업데이트하는 경우는 종종 시스템에서 실제로 데이터를 수정해야 할때가 발생한다. 예를들어, 데이터베이스에 저장된 실제데이터를 갱신하는 경우가 이런경우이다. 직접 데이터베이스에 접근하고 데이터를 수정해야 한다.
DTO는 데이터 전송을 목적으로 하기 때문에, 데이터베이스와 직접적으로 상호작용하는 역할을 맡기지 않는 것이 일반적이다. 데이터베이스와의 상호작용은 VO와 인테티가 담당하는것이 일반적이다.
DTO는 주로 데이터 전송에만 사용하고, VO는 불변성을 지니는것이 이상적이지만, 필요에 따라 업데이트가 필요할수 있다.
자바를 이용한 웹 개발의 기본 서블릿/JSP
최근에는 스프링 프레임워크를 사용하는게 기본.
JDBC처리를 쉽게 할수 있는 라이브러리 -> MyBatis
어떻게 하면 객체와 객체 간의 관계를 더 유연하게 유지할 것인가?
이전 예제들에서 모든 컨트롤러들은 TodoService같은 서비스객체를 이용해야만했다. 이경우 컨트롤러는 서비스 객체에 의존적(dependent)라고 표현한다.
스프링프레임워크는 다양한 방식으로 필요한 객체를 찾아서 사용할수 있도록 xml설정이나 자바 설정등을 이용할수 있다.
자바 11버전 스프링 5버전 - 톰캣 9
자바 17 버전 스프링 6버전- 톰캣 10
- 설정 파일 추가
스프링 프레임워크는 자체적으로 객체를 생성하고 관리하면서 필요한 곳으로 객체를 주입(inject)하는 역할을 하는데 이를 위해서는 설정 파일이나 에너테이션 등을 이용해야 한다. 스프링이 관리하는 객체들은 빈(Bean)이라는 이름으로 불리는데 프로젝트 내에서 어떤 빈(객체)들을 어떻게 관리할 것인지를 설정하는 설정 파일을 작성할수 있다.
스프링의 빈 설정은 xml을 이용하거나 별도의 클래스를 이용하는 자바 설정이 가능하다. 여기에서는 우선 xml설정을 이용하도록 한다.