티스토리 뷰
1. Dto(Data Transfer Object)
계층간의 데이터 교환을 위한 객체(Java Beans)
DB에서 데이터를 얻어 Service나 Controller등으로 보낼때 사용하는 객체
계층간의 데이터 교환이 이루어 질 수 있도록 하는 객체이기 때문에 특별한 로직을 갖고 있지 않은 순수한 데이터 객체여야하며, getter/setter 메서드만을 갖는다.
DB에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 DTO클래스에는 가급적 setter사용을 지양한다. (대신 생성자에서 값을 할당한다.)
Request와 Response용 Dto는 View를 위한 클래스
자주 변경이 필요한 클래스
Presentation Model
toEntity() 메서드를 통해서 DTO에서 필요한 부분을 Entity로 만듬
Controller Layer에서 Response DTO 형태로 Client에 전달
주로 API 데이터를 반환하거나 읽기 모델에 사용
※ VO(Value Object) vs DTO
VO는 DTO와 동일한 개념이지만 read only 속성을 갖는다.
VO는 특정한 비즈니스 값을 담는 객체이고, DTO는 Layer간의 통신 용도로 오고가는 객체를 말한다.
2. Entity(=Domain)
DB 테이블에 존재하는 Column들을 필드로 가지는 객체
테이블과 링크될 클래스임
DB의 테이블과 1대 1로 대응(테이블이 가지지 않는 컬럼을 필드로 가져서는 안됨)
Entity클래스는 다른 클래스를 상속 받거나 인터페이스의 구현체여서는 안됨.
@Entity, @Column, @Id 등을 이용
최대한 외부에서 Entity 클래스의 getter method를 사용하지 않도록 해당 클래스 안에서 필요한 로직 method를 구현
Domain Logic만 가지고 있어야 하고 Presentation Logic을 가지고 있어서는 안된다.
구현한 method는 주로 Service Layer에서 사용
※ Entity 클래스와 DTO 클래스를 분리하는 이유
Entity는 DB Layer를 위한, DTO는 View Layer를 위한 것으로 역할을 분리하기 위함.
Entity는 실제 테이블과 매핑되어 만일 변경 되게 되면 여러 다른 클래스에 영향을 끼치고,DTO 클래스(Request / Response 클래스)는 View와 통신하며 자주 변경되므로 분리 필요.
※ @Controller 와 @RestController
[@Controller]
@Controller은 뷰에 표시될 데이터가 있는 Model 객체를 만들고 올바른 뷰를 선택하는 일을 담당
@ResponseBody를 사용하여 HTTP Response Body에 데이터를 담아 요청을 완료할 수 있다.
[@RestController]
Spring MVC Controlle에 @ResponseBody가 추가된 것.
RestController의 주용도는 Json형태로 객체 데이터를 반환 하는 것.
⇒ @Controller와 @ResponseBody를 사용하여 만들 수 있지만 이러한 방식은 RESTful 웹서비스의 기본 동작이기 때문에 Spring은 @Controll와 @ResponseBody의 동작을 조합한 @RestController을 도입
@Controller @ResponseBody public class MVCController{ } |
@RestController public class ReftFulcontroller{ } |
※ RestController와 @Service를 나누는 이유
@Service를 만들어서 나누는 이유는 중복되는 코드가 생기기 때문
비즈니스 로직은 다른 요청 URL에서 사용해야 하는 경우가 있다. 만약 비즈니스 로직 코드가 컨트롤러에 구현되어 있는 경우, 다른 컨트롤러의 핸들러 메소드에서 똑같은 로직코드를 구현해야하니 중복코드가 발생하고 재사용성이 줄어든다.
중복되는 코드가 발생하면 따로 모듈화를 해서 나눠주는 것이 유지 보수하기 편리하다. (NodeJS => 모듈화)
모든 기능들을 세분화해서 @Service에 작성하게 되면 나중에는 서비스의 기능들을 조합만 해서 새로운 기능을 만들 수 있음
서비스에서 다른 서비스를 의존성 참조하는 것도 가능하다.
즉, 비즈니스 로직의 서비스 구현체에서 구현하는 이유는 바로 확장성과 재사용성 그리고 중복 코드의 제거이다.
'WEB > 기타' 카테고리의 다른 글
2024년 적용 SW기술자 평균임금 공표 (조사년도 2023년) (0) | 2024.07.11 |
---|---|
chart.js (0) | 2024.06.12 |
[JPA] 6. JPA Auditing (0) | 2024.01.23 |
[JPA] 5. Repository query keywords (0) | 2024.01.23 |
[JPA] 4. Repository (0) | 2024.01.23 |
- Total
- Today
- Yesterday
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- 자바스크립트break
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- sw기술자평균임금 #2025년 sw기술자 평균임금
- 좋은책 #밥프록터 #부의원리
- 증폭기 #아이피타임증폭기
- iptime와이파이증폭기 #와이파이증폭기설치
- css미디어쿼리 #미디어쿼리 #mediaquery
- 파비콘 #파비콘 사이트에 적용
- jdk #jre
- 쇼팬하우어 #좋은책
- thymeleaf
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- 와이파이약할때
- SQL명령어 #SQL
- 와이파이증폭기추천 #와이파이설치
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- 자바스크립트정규표현식
- echart
- 자바스크립트countiue
- 파비콘사이즈
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- ajax
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- 와이파이신호 #와이파이 #와이파이신호세게
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- 좋은책
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- 자바스크립트 #javascript #math
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |