JAVA
-
패스트캠퍼스 챌린지 13일차JAVA/Spring 2021. 11. 13. 23:50
1. 글로벌 예외 처리 (Global Exception) 예전에는 대개 예외들을 try catch로 잡아낸 후 이 예외에 대한 결과값을 짜서 return하는 방식(true와 false를 return하는 방식을 많이 사용)으로 예외 처리에 대한 코드를 작성했다. 이런 코드가 짜여질 경우 return되는 값에 대한 처리가 필요하기 때문에 코드가 훨씬 길어지게 된다. 지금까지는 코드 작성 시 예외 발생 없이 성공하는 경우들에 처리를 구체적으로 진행했다면 이번에는 실패에 대한 예외 처리를 구체적으로 정의하는 코드들을 학습한다. 우선 아래와 같이 Controller에 포함된 각각의 메서드에 try catch를 통해 Exception을 처리할 수도 있다. dmaker.controller.DMakerControlle..
-
패스트캠퍼스 챌린지 12일차JAVA/Spring 2021. 11. 12. 22:00
1. Developer Delete(삭제), 트랜잭션 실무 개발 오늘은 DB에 저장된 데이터를 삭제하는 방법과 실무에서의 트랜잭션 개발에 관련하여 학습한다. 이전에 했던 것과 동일하게 우선 Controller에 developer를 delete하는 메서드를 등록해준다. 삭제를 위한 프로토콜로는 'Delete'가 있다. dmaker.controller.DMakerController @DeleteMapping("/developer/{memberId}") public DeveloperDetailDto deleteDeveloper( @PathVariable String memberId ){ return dMakerService.deleteDeveloper(memberId); } 트랜잭션은 하나는 성공하고 다른 하..
-
패스트캠퍼스 챌린지 11일차JAVA/Spring 2021. 11. 11. 11:13
1. Developer Put(수정) 기능 개발 프로토콜은 약속과도 같은 것이다. 안 지켜도 입력된 동작이 수행될 때 문제가 발생하지는 않지만 프로토콜에 맞춰서 코드를 짜주어야 소통 + 협업 시에 훨씬 편리하게 업무를 진행할 수 있다. 데이터 수정 시에는 Put 메서드를 통해 요청을 전송한다. 먼저 DMakerController에 @PutMapping 어노테이션을 붙인 메서드를 하나 만들어준다. dmaker.controller.DMakerController @PutMapping("/developer/{memberId}") public DeveloperDetailDto editDeveloper ( @PathVariable String memberId, // 수정 요청 시 수정될 값을 받아야하기 때문에 넣어..
-
패스트캠퍼스 챌린지 10일차JAVA/Spring 2021. 11. 10. 21:13
1. Developer Get(조회) 기능 개발 지난번에 생성한 Developer를 조회하는 기능에 대해 알아본다. 먼저, 전체 개발자 목록을 조회하는 방법이다. DMakerController에 정의된 getAllDevelopers에서 return값을 DeveloperDto가 담긴 List로 설정해준다. dmaker.controller.DMakerController @GetMapping("/developers") // return하는 값을 DeveloperDto가 들어가는 List로 설정해준다. public List getAllDevelopers() { // GET /developers HTTP/1.1 log.info("GET /developers HTTP/1.1"); return dMakerServic..
-
패스트캠퍼스 챌린지 9일차JAVA/Spring 2021. 11. 9. 21:05
1. 간단한 HTTP 테스트 만들기 이제까지 구현했던 createDeveloper를 실제로 POST Request를 전송시켜 정상적으로 작동이 되는지 테스트해본다. 먼저, createDeveloper에서 developer 빌드 시 들어가야하는 값들을 request로부터 받아올 수 있도록 수정한다. dmaker.service.DMakerService @Transactional public CreateDeveloper.Response createDeveloper(CreateDeveloper.Request request) { validateCreateDeveloperRequest(request); // developer 빌드 시 필요한 값들을 request로부터 받아오도록 수정해준다. Developer dev..
-
패스트캠퍼스 챌린지 8일차JAVA/Spring 2021. 11. 8. 20:48
1. 비즈니스 Validation 적용 dmaker.service.DMakerService @Transactional public void createDeveloper(CreateDeveloper.Request request) { // private 메소드를 생성하여 비즈니스 validation을 진행한다. validateCreateDeveloperRequest(request); // Builder를 통해 각각의 데이터들을 삽입해준다. Developer developer = Developer.builder() .developerLevel(DeveloperLevel.JUNIOR) .developerSkillType(DeveloperSkillType.FRONT_END) .experienceYears(2) ...
-
패스트캠퍼스 챌린지 7일차JAVA/Spring 2021. 11. 7. 23:57
1. 데이터 벨리데이션의 적용 dmaker.controller.DMakerController @Slf4j @RestController @RequiredArgsContstructor public class DMakerController { @GetMapping("/developers") public List getAllDeveleopers() { // GET /developers HTTP/1.1 log.info("GET /developers HTTP/1.1"); return Arrays.asList("Harry", "Paul", "Ashe"); } // 주로 DB 데이터 삽입 요청시에는 'POST' 메서드를 많이 쓰기 때문에 // Get이 아니라 PostMapping으로 바꿔준다. // @GetMappin..
-
패스트캠퍼스 챌린지 6일차JAVA/Spring 2021. 11. 6. 23:37
1. AOP & Transactional 실전 트랜잭션을 통해 DB 데이터 전송 중 오류가 날 경우 롤백하여 데이터를 안전하게 보존할 수 있다. 아래는 트랜잭션을 @Transactional 어노테이션 없이 수동으로 적용시킨 부분이다. dmaker.service.DMakerService @Service @RequiredArgsConstructor public class DMakerService { private final DeveloperRepository developerRepository; // 일종의 DB private final EntityManger en; public void createDeveloper(){ // 트랜잭션 객체를 가져옴 EntityTransaction transaction = ..