프로젝트. Entity 만들기

2022. 11. 3. 19:25checkIn 프로젝트(SpringBoot)

@Entity                                        -  @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라고 불림 테이블자동생성됨
@IdClass(BoarderPK.class)        - 복합키를 만들기 위해서 추가해야하는 애노테이션

 

Board 관련 패키지 생성

Entity 추가

package com.teamproject.checkin.boardService;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class BorderRepository {

    @Id @GeneratedValue
    private String corpCode;

    @Id @GeneratedValue
    private String partCode;

    @Id @GeneratedValue
    private String boardType;

    @Id @GeneratedValue
    private Long boardNo;

    private String boardTitle;
    private String boardContent;

}

 

Run시 에러발생

 

이유는 복합키 때문이였다.

 

복합키 설정을 의해 BoarderPK 클레스 생성

//복합키를 사용 할 수 있게  implements Serializable  임플리먼트 헤준다

 

package com.teamproject.checkin.boardService;

import lombok.Data;
import java.io.Serializable;

@Data
//복합키를 사용 할 수 있게  implements Serializable  임플리먼트
public class BoarderPK implements Serializable {
    private String corpCode;
    private String partCode;
    private String boardType;
    private Long boardNo;
}

 

package com.teamproject.checkin.boardService;

import javax.persistence.*;

@Entity
@IdClass(BoarderPK.class)
public class Boarder {

    @Id
    private String corpCode;

    @Id
    private String partCode;

    @Id
    private String boardType;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)//자동으로 PK 값 입력이 됨 테스트 필요
    private Long boardNo;

    private String boardTitle;
    private String boardContent;

}

Hibernate: 
    
    create table boarder (
       board_no bigint not null auto_increment,
        board_type varchar(255) not null,
        corp_code varchar(255) not null,
        part_code varchar(255) not null,
        board_content varchar(255),
        board_title varchar(255),
        primary key (board_no, board_type, corp_code, part_code)
    ) engine=InnoDB

 

잘 동작된다.

 

@GeneratedValue(strategy = GenerationType.IDENTITY)

위의 부분만 나중에 수정해주도록하자

설계한 게시판 구조는, 회사,부서,게시판타입 에 따라 boardNo를 가지도록 설계를 했는데

위의 방식으로 잘 돌아갈지 확인을 해보아야 할 것 같다.