별도의 DTO 는 요청과 응답으로 변환하였다.VO 와 DTO 를 별도 폴더를 만들어 안에서 분리함.Converter 생성MapStruct 로 Vo ↔ DTO 간의 변환 쉽게 수행할수있도록 처리함Persistence.java 생성DB에서 들고온 VO 값에 대한 유효성을 체크하고VO값을 RespDTO 로 변환 역할 수행public 응답 메서드명(요청DTO ) throws NotFoundException { VO = 매퍼DB조회(요청 DTO); if (VO == null) { throw new NotFoundException("VO not found"); } return boardConfigConverter.toDto(VO); // VO -> DTO } Uploaded by N2T
초기 상태게시글을 요청시 마다 서버에서 쿠키를 확인한다.해당 게시글의 조회수 쿠키가 없는 경우 조회수를 증가시킨다이후 쿠키를 생성한다.상당히 직관적이긴하다.하지만..만약 대량의 트래픽이 발생한다면? 서버단에서 매번 글 생성시 서버에 부하를 주게된다.그냥 클라이언트에게 맡기는 것이 로직의 다이어트를 위해 합리적이다.왜 클라이언트 단으로 옮겨야하는가서버 부하 감소게시글 요청 마다 쿠키를 확인하여 처리하는 로직이 서버에 부하확장성이후 프론트와 백엔드가 분리되는 경우( 지금은 서버에서 화면단까지 처리중..)클라이언트에서 처리하는 것이 유연함사용자 경험성UX 라고 하는데,, 서버에서 로직을 처리하면 사용자는 게시글 페이지 로딩 시간 동안 기다려야하게 된다.클라이언트에서 처리하면 페이지 로딩 후 비동기적으로 처리가..
Spring Webflux 에서 사용할 수 있는 WebClient 라는 모던한 대체제가 있는 클라이언트입니다.정의동기 방식의 HTTP 클라이언트웹 서비스 호출을 위한 메서드 제공특징동기성동기적으로 동작함.API 호출을 하는 경우 해당 호출이 완료될 때까지 대기함.다양한 HTTP 메서드GET , POST , PUT , DELETE 등의 HTTP 메서드를 위한 템플릿 메서드 제공데이터 변환 가능JSON , XML 등의 여러 응답에 대응가능기본 세팅Spring Bean 등록@Configuration public class RestConfig { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } }api 의 호출@Controller ..
현재 상황추가적으로 Create Update 작업의 경우 DTO 가 아니라 VO 를 그대로 받아서 컨트롤러에서 별도 setter 의 레거시한 구조를 유지하고있다.또한 Mybatis 는 캐싱을 하지 않기에, 상대적으로 성능적으로 문제가 있음.또한 DB 테이블 구조 자체도 별도의 인덱싱이 PK 외에는 걸려있지않음. → 다른 인덱싱할 요소 자체가 일단 없긴함.. ⇒ Mybatis에서 성능을 개선할 여지가 크게 와닿지 않는 상황multiInsert 의 경우 multipleRow - Insert 를 하고 있지 않고 단건 Insert Update 를 수행한다.또한 delete 도 단건임.실무상으로 10만건 이상을 조회하는 경우 상당히 부하가 심하다. 요청에서 응답까지 체감상 3초 이상의 시간이 걸림. ⇒ 물론 서버..
현재 상황 @RequestMapping(value="주소", method=RequestMethod.GET) public String 상품리스트 불러오기(HttpServletRequest request, Model model, 도메인종류, @PathVariable String 상품분류, @ModelAttribute("검색을 위한 DTO")검색을위한DTO 검색DTO ) throws ParseException{ 상품종류검색을위한 DTO 선언 상품종류검색을위한 DTO . set상품종류ID 상품종류검색을위한 DTO. set서브도메인을 위한 메서드(도메인종류. 현재사이트의 도메인) // 서브도메인으로 구성된 경우 별도 db분기처리를 위함 상품종류VO 상품종류 = 상품서비스.상품리스트 불러오기(상품종류검색을위한 DT..
API 분리별도 상품종류에 대한 설정 코드를 api 로 분리하기상품종류 선언 별도 속성에 대해 설정함. 서비스를 통해 상품종류에 대한 조회(VO)를 DTO 로 해당 종류에 대해 조회할 수 있도록 설정함REST CONTROLLER@RestController("/api/board") @RequiredArgsConstructor @Slf4j public class 상품API{ private final 상품서비스 상품서비스; @GetMapping("/config/list/{bcId}") public ResponseEntity 상품설정정보조회(@PathVariable("상품정보") String 상품정보, 상품설정정보DTO 상품설정정보DTO) { 상품설정 상품설정= 상품서비스.상품설정정보조회(상품설정정보DTO); ..