분류 전체보기 119

API 만들기 연습 #10

삭제 기능 만들기 삭제 기능 삭제 기능을 구현하기 전 가장 고민했던 부분은 바로 insert 기능을 만들 때 api 테이블에 Count 되는 부분이었다 추가할 때 Count 값이 증가한다면 삭제할 때는 감소해야 하는데 처음에는 그냥 반대로 +1 이 아닌 -1 하면 되는 거 아닌가? 하고 진행했지만 insert 할 때는 입력창에 입력하는 api 의 PK값이 있는데 삭제할 때는 그게 없으니 api 테이블에 Count를 찾을 수가 없었다 고민한 3가지 방법 1. 삭제할 때 insert처럼 고객 PK를 입력받기 2. 장치에 상태를 만들어 삭제가 아닌 상태를 변경하는 방향 3. 삭제할 때 고객의 PK를 얻어온다 … 이걸 어떻게 처리할까를 한참을 고민하고 지금..

API 만들기 연습 #9

추가로 설계한 Device 등록 로직 만들기 VO , DTO 먼저 만들어주자 DeviceVO package com.apiservice.model; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import java.time.LocalDateTime; @Getter @Builder @AllArgsConstructor @NoArgsConstructor public class DeviceVO { private Integer serviceNumber; // 서비스 번호 private String deviceName; // 장치 이름 private String ..

API 만들기 연습 #8 추가 설계

⭐더욱 다양한 상황 , 에러 등등 을 위해 추가적인 설계 타입이 다르게 들어오는 경우 에러 처리 DB의 사이즈보다 더 크게들어오는 경우 추가적인 테이블 설계 회원 테이블은 있으니 회원에게 등록되는 장치 관련 테이블을 구상 기존 테이블에 새로운 컬럼 deviceCount 가 추가되었다 기존 DB를 사용지(고객) 로 가정하고 거기에 등록하는 장치 DB테이블을 추가로 설계했다 deviceCount 컬럼에 default 값을 안주면 데이터가 안들어간다 추가된 기능 명세서

Spring Batch 도메인 ExecutionContext

기본 개념 프레임워크에서 유지 및 관리하는 “키 / 값”으로 된 컬렉션으로 StepExecution 또는 JobExecution 객체의 상태(state)를 저장하는 공유 객체 DB 에 직렬화 한 값으로 저장됨 {”key” : “value”} 공유 범위 Step 범위 = 각 Step의 StepExecution에 저장되며 Step 간 서로 공유 안됨 Job 범위 = 각 Job의 JobExecution에 저장되며 Job 간 서로 공유 안되며 해당 Job의 Step 간 서로 공유됨 Job 재 시작 시 이미 처리한 Row 데이터는 건너뛰고 이후로 수행하도록 할 때 상태 정보를 활용한다. 구조 ExecutionContext Map map = new ConcurrentHashMap 유지 , 관리에 필요한 키값 설정 ..

Spring Batch 2022.08.30

API 만들기 연습 #6 유효성 검증

@Valid를 이용한 유효성 검증 유효성 검사 ApiDTO package com.apiservice.model; import lombok.*; import javax.validation.constraints.Email; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Pattern; import java.time.LocalDateTime; @Data @AllArgsConstructor @NoArgsConstructor @Builder public class ApiDTO { public interface insertGroup{} public interface updateGroup{} private Intege..

API 만들기 연습 #5 CustomException

CustomException 처리 하기 ✅개인적으로 CustomException에 대한 작업이 가장 힘들었습니다 구글링해도 잘 모르겠고 이해 안 가는 코드만 보이고 한 3일 동안은 수많은 코드를 쓰고 지우고 반복하며 지금 코드를 만들었습니다 물론 좋은 코드라고는 할 수 없지만 현재로는 최선인 것 같습니다 😭😭 Error 처리에 대한 정보를 가지는 ErrorCode 와 ErrorDTO 만들어보자 ErrorDTO package com.apiservice.model.Error; import lombok.AllArgsConstructor; import lombok.Getter; @Getter @AllArgsConstructor public class ErrorDTO { private final int statu..

API 만들기 연습 #4 페이징

어떤 SQL을 사용하느냐에 따라 페이징 방법이 살짝 다를 수 있습니다 저도 MySQL로 만 만들어 보다 최근 PGSQL로 만들어야 했을 때 참... 난감하더군요 하지만 이 글을 보고 계신 분들을 뛰어나신 분들이기에 뚱땅 뚱땅 만드실 수 있을 거라 생각합니다. 자 그럼 select 와 페이징을 만들어보겠습니다 ApiRepository package com.apiservice.repository; import com.apiservice.model.ApiDTO; import com.apiservice.model.ApiVO; import com.apiservice.model.ListDTO; import org.apache.ibatis.annotations.Param; import org.springframewo..