ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 패스트캠퍼스 챌린지 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 class Developer {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        protected Long id;
    
        @Enumerated(EnumType.STRING)
        private DeveloperLevel developerLevel;
    
        @Enumerated(EnumType.STRING)
        private DeveloperSkillType developerSkillType;
    
        private Integer experienceYears;
        private String memberId;
        private String name;
        private Integer age;
    
        @CreatedDate
        private LocalDateTime createdAt;
    
        @LastModifiedDate
        private LocalDateTime updatedAt;
    }

    위의 예제에서 볼 수 있듯이  @Builder가 들어가면 @NoArgsConstructor와 @AllArgsConstructor를 함께 넣어주어야 한다.

    DeveloperLevel과 DeveloperSkillType의 경우 개발자의 실력과 보유 기술에 미리 지정해둔 값들만 삽입할 수 있도록 @Enumerated 어노테이션을 달아준다.

    id에는 @GeneratedValue를 달아 Auto Increment 되도록 설정한다.

    createdAt과 updatedAt 필드에는 각각 @CreatedDate와 @LastModifiedDate 어노테이션을 달아 데이터가 생성되고 수정될 때 자동으로 시간이 입력될 수 있도록 한다.

     

    다음으로 DeveloperLevel과 DeveloperSkillType에 사용할 문자열 값들을 서술해준다.

     

    dmaker.type.DeveloperLevel

    @Getter
    @AllArgsConstructor
    public enum DeveloperLevel {
        NEW("신입 개발자"),
        JUNIOR("주니어 개발자"),
        JUNGNIOR("중니어 개발자"),
        SENIOR("시니어 개발자")
        ;
    
        private final String description;
    }

    dmaker.type.DeveleoperSkillType

    @Getter
    @AllArgsConstructor
    public enum DeveloperSkillType {
        BACK_END("백엔드 개발자"),
        FRONT_END("프론트엔드 개발자"),
        FULL_STACK("풀스택 개발자")
        ;
    
        private final String description;
    }

     

    다음에는 입력한 값들이 DB에 저장될 수 있도록 JpaRepository를 이용한 Repository를 만들어준다. 관련된 내용은 추후에 다룰 예정이다.

     

    dmaker.repository.DeveloperRepository

    @Repository
    public interface DeveloperRepository
            extends JpaRepository<Developer, Long> {
    }

     

    로직을 정의할 Service를 생성한다.

     

    dmaker.service.DMakerService

    @Service
    @RequiredArgsConstructor
    public class DMakerService {
        private final DeveloperRepository developerRepository;
    
        @Transactional
        public void createDeveloper(){
            // Builder를 통해 각각의 데이터들을 삽입해준다.
            Developer developer = Developer.builder()
                    .developerLevel(DeveloperLevel.JUNIOR)
                    .developerSkillType(DeveloperSkillType.FRONT_END)
                    .experienceYears(2)
                    .name("Harry")
                    .age(31)
                    .build();
    
            // 작성된 developer 객체를 developerRepository를 통해 DB에 저장한다.
            developerRepository.save(developer);
        }
    }

     

    생성한 Service를 Controller에서 실행시켜준다.

     

    dmaker.controller.DMakerController

    @GetMapping("/create-developer")
    public List<String> createDeveleoper() {
      // GET /create-developer HTTP/1.1
      log.info("GET /create-developer HTTP/1.1");
    
      dMakerService.createDeveloper();
    
      return Collections.singletonList("Harry");
    }

     

     

    본 포스팅은 패스트 캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
    https://bit.ly/3FVdhDa

     

    수강료 100% 환급 챌린지 | 패스트캠퍼스

    딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

    fastcampus.co.kr

    'JAVA > Spring' 카테고리의 다른 글

    패스트캠퍼스 챌린지 8일차  (0) 2021.11.08
    패스트캠퍼스 챌린지 7일차  (0) 2021.11.07
    패스트캠퍼스 챌린지 6일차  (0) 2021.11.06
    패스트캠퍼스 챌린지 5일차  (0) 2021.11.05
    패스트캠퍼스 챌린지 3일차  (0) 2021.11.03

    댓글

Designed by Tistory.