전체 글
-
패스트캠퍼스 챌린지 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 = ..
-
패스트캠퍼스 챌린지 5일차JAVA/Spring 2021. 11. 5. 22:27
1. Transaction 트랜잭션의 특징을 정의한 말로 ACID라는 말이 있다. Atomic : 원자성 트랜잭션의 원자성 덕분에 은행 입출금 시, 한 쪽에서는 돈이 빠져나갔는데 다른 쪽에서 돈을 받지 못하는 등의 문제가 발생하지 않는다. 트랜잭션의 가장 중요한 덕목 중 하나이다. Consistency : 일관성 모든 DB 테이블의 자료들은 정해진 규칙에 맞춰서 자료가 저장되어야만 한다. 트랜잭션이 종료되는 지점에는 꼭 자료들의 일관성이 맞춰져있어야만 한다. 예를 들어, '일반적인 은행 계좌의 잔액은 0원 이하로 될 수 없다' 등의 규칙이 트랜잭션이 끝난 후에 꼭 지켜져 있어야만 한다. Isolation : 고립성 DB를 처리하는 방법들에 따라서 Isolation 레벨이 달라진다. Isolation 레벨..
-
패스트캠퍼스 챌린지 4일차JAVA/Spring 2021. 11. 4. 13:09
1. H2 DB RDB 중 하나로 설치하지 않아도 사용할 수 있는 데이터베이스 툴이다. 간단한 테스트 용도로 사용하기 좋으며 어플리케이션이 종료되면 관련된 모든 데이터가 소멸된다. 아래는 H2DB를 활용하여 테이블을 생성하고 데이터를 삽입하는 방법이다. 우선 DB에 활용할 Entity를 정의해주도록 한다. dmaker.entity.Developer @Getter @Setter @Builder // @Builder가 들어가면 @NoArgsConstructor와 @AllArgsConstructor를 함께 넣어주어야 한다. @NoArgsConstructor @AllArgsConstructor @Entity @EntityListeners(AuditingEntityListener.class) public clas..
-
패스트캠퍼스 챌린지 3일차JAVA/Spring 2021. 11. 3. 19:48
1. Null Safety Null Safety는 Null 연관성을 높이는 법이다. 아래와 같은 코드를 만들지 않는 방법 혹은 아래와 같은 널 체크를 하지 않아서 발생하는 NPE(Null Pointer Exception)을 방지하는 방법 완벽한 방법은 아니지만 IDE에서 경고를 표시함으로써 1차적인 문제를 방지하고, 정확한 에러 위치를 확인할 수 있도록 도움 public void method(String request) { if(request == null) return; // normal process System.out.println(request.toUpperCase()); } @NonNull Annotation 해당 값이나 함수 등이 Null이 아님을 나타내는 어노테이션 org.springfram..