5.1 버전과 그 이전MySQL 5.1에서는 한 테이블 내에서 DEFAULT CURRENT_TIMESTAMP와 ON UPDATE CURRENT_TIMESTAMP 속성을 갖는 TIMESTAMP 컬럼을 각각 하나씩만 허용합니다.위 처럼 한 테이블내에서 시간값에 default 값을 추가해주는 경우 기본값 설정을 할 수 없다는 문구가 발생함.5.6 이상이후 버전에서는 이러한 제한이 완화되어 두 개 이상의 TIMESTAMP 컬럼에 DEFAULT CURRENT_TIMESTAMP를 사용할 수 있게 되었습니다.여러 TIMESTAMP 컬럼에 대해 DEFAULT CURRENT_TIMESTAMP와 ON UPDATE CURRENT_TIMESTAMP 클로즈를 사용할 수 있습니다이유?당시의 기술적인 제약과 내부 구현의 복잡성 때..
별도의 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초 이상의 시간이 걸림. ⇒ 물론 서버..