패스트캠퍼스 챌린지 4일차
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