[Spring/개발] - TMI(3)

동글이·2022년 8월 15일
0

Spring/개발

목록 보기
4/7

default 값 설정해주는 방법

첫번째 방법

  • 프로젝트를 등록할 때 유저에게 입력받지 않고 자동으로 저장되는 값들을 정해주려고했다.
  • service로 가서 등록하는 함수(register)에서 save 함수를 호출하기 전에 값을 넣어준다.
    ※ enum은
    project.setStatus(ProjectStatus.INSPECTION);
    이런식으로 enum을 저장해준 클래스를 호출하여 거기중 하나의 값을 가져와서 저장해준다!

두번째 방법

  • 이 방법을 늦게 알게 되어 추가로 쓴다.

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder // 빌더 패턴
    //ORM -> Java(다른언어) Object -> 테이블로 매핑해주는 기술
    @Entity // User 클래스가 MySQL에 테이블이 생성이 된다. 이게 클레스에 가까이 있는 것이 좋다
    public class Board {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)// auto_increment
        private int id;
    
        @Column(nullable = false, length = 100)
        private String title;
    
        @Lob // 대용량 데이터
        private String content; // 섬머노트 라이브러리 <html>태그가 섞여서 디자인이 됨.
    
        @ColumnDefault("0")
        private int count; // 조회수
    
        @ManyToOne // Many = Board, User = One 한명의 유저는 여러개의 게시글을 쓸 수 있다.
        @JoinColumn(name="userId") // foreign key (userId) references User (id)
        private User user; // DB는 오브젝트를 저장할 수 없다. FK, 자바는 오브젝트를 저장할 수 있다. //참조 할 테이블
    
        @CreationTimestamp //값이 입력될때 혹은 업데이트될때 자동으로 시간이 들어간다.
        private Timestamp createDate;
    
    }

    이런식으로 @ColumnDefault(), @CreationTimestampe 등을 이용!
    근데 Enum은 안먹어서 첫번째 방법으로 하였다..

FK 값 설정해주는 방법

  • 컨트롤러에서 project를 등록할 때 return 값으로 projectId를 주게 되는데 그 값을 받아서 해당 id 값을 FK로 사용할 service에 매개변수로 넣어준다.
  • 예시) 컨트롤러
    @PostMapping("/projects")
    public ResponseEntity register (@RequestBody ProjectCreateDTO model){
        CustomResponseBody<ProjectCreateDTO> responseBody = new CustomResponseBody<>("프로젝트 등록 성공2");
        try {
            Long projectId = projectService.register(model.getProject());
            projectSkillService.register(model.getProjectSkill(),projectId);
            recruitInfoService.register(model.getRecruitInfo(),projectId);

        } 
        //...생략

        return ResponseEntity.ok().body(responseBody);
    }

Feature#8(프로젝트 생성) 남은 이슈

  • leader 까지 해서 나중에 테스트
  • project 엔티티에 이미지 추가
    => 이미지는 url로 받을 예정으로 String으로 저장
  • project 엔티티 저장할때 자동적으로
    1. status, like_count => default 검수, 0 으로 저장되게
    2. start_date, end_date => 현재시각으로
  • recruit_info 엔티티 저장할때 자동적으로 complet_count => 0으로 저장되게
    -> 아무것도 안넣어주면 걍 자동으로 0으로 저장됨!

  • FK 값 가져오는 방법 고민

profile
기죽지 않는 개발자

0개의 댓글