티스토리 뷰
728x90
1. DTO는 편의 상 사용하는 유사 Entity객체이다.
1-1 일반적인 경우에는 Entity를 그대로 받아 @ModelAttribute로 처리한다.
1-2 DTO역시 동일한 방식으로 @ModeAttribute로 객체를 구성할 수 있다.
2. 보통 Entity의 일부분을 받거나 update 용도로 Entity와는 구조가 다른 데이터를 받는 경우에 DTO를 사용한다.
2-1 사용방법은 거의 Entity객체와 동일하고 보통 이름에 suffix로 Request를 붙이는 경우가 많다.
2-2 DTO를 사용할 경우 보통 로직처리는 별도의 Service 객체를 만들어서 처리한다.
3. 아래 코드는 서비스에서 DTO를 받아서 승객 Entity와 예약 Entity를 생성하고 데이터베이스에 저장하는 예제이다.
package pe.pilseong.flightreservation.dto;
import lombok.Data;
@Data
public class ReservationRequest {
private Long flightId;
private String passengerFirstName;
private String passengerLastName;
private String passengerEmail;
private String passengerPhone;
private String nameOnTheCard;
private String cardNumber;
private String expirationDate;
private String securityCode;
}
package pe.pilseong.flightreservation.dto;
import lombok.Data;
@Data
public class ReservationUpdateRequest {
private Long id;
private Boolean checkedIn;
private int numberOfBags;
}
// 서버스 클래스 예제
@Service
public class ReservationServiceImpl implements ReservationService {
@Autowired
private FlightRepository flightRepository;
@Autowired
private ReservationRepository reservationRepository;
@Autowired
private PassengerRepository passengerRepository;
@Override
public Reservation bookFlight(ReservationRequest request) {
// make payment logic - card or cash etc.
Long flightId = request.getFlightId();
Flight flight = this.flightRepository.findById(flightId).get();
Passenger passenger = new Passenger();
passenger.setFirstName(request.getPassengerFirstName());
passenger.setLastName(request.getPassengerLastName());
passenger.setEmail(request.getPassengerEmail());
passenger.setPhone(request.getPassengerPhone());
Passenger savedPassenger = this.passengerRepository.save(passenger);
Reservation reservation = new Reservation();
reservation.setFlight(flight);
reservation.setPassenger(savedPassenger);
reservation.setCheckedIn(false);
return this.reservationRepository.save(reservation);
}
}
728x90
'Spring > Spring Boot' 카테고리의 다른 글
Spring Boot : PDF Generator(itextpdf) 사용하기 + Email 전송 (0) | 2020.04.30 |
---|---|
Spring Boot : RestTemplate사용하기 (0) | 2020.04.30 |
Spring Boot : Data JPA - @Query 사용하기 (0) | 2020.04.29 |
Spring Boot : Email 보내기 (0) | 2020.04.26 |
Spring Boot : Web Application Context Root 위치 설정 (0) | 2020.04.25 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
TAG
- 설정
- Spring Security
- 매핑
- Validation
- 외부파일
- MYSQL
- 로그인
- spring boot
- mapping
- Angular
- RestTemplate
- 설정하기
- Many-To-Many
- one-to-many
- Security
- 상속
- Rest
- one-to-one
- form
- 스프링부트
- 자바
- WebMvc
- hibernate
- XML
- Spring
- login
- 스프링
- crud
- jsp
- 하이버네이트
250x250