Hello

22. Board 테이블 생성

by 볼빵빵오춘기

21. 데이터베이스 한글 인코딩 은 이미 해논 상태여서 PASS

 

Board 클래스

게시물을 적은 사람이 누구인지 알아야하기 때문에 작성자부분을 아래코드와 같이 적어야 한다고 생각하지만

    private int userId;

userId값을 통해서 다시 user를 select하든지 userId값으로 board와 join을 해서 가져와야하기 때문에

oRM에서는 fk로 찾는게 아니라 오브젝트를 바로 넣으면 된다.

하지만 자바는 object를 저장할 수 있지만 DB에서는 오브젝트를 저장할 수 없기 때문에 충돌이 난다.

@JoinColumn(name="userId") 필드값으로 들어간다고 적어준다.

@ManyToOne(fetch = FetchType.EAGER) 를 코드에 넣음으로써 연관관계에 대해서 알려준다. 

 

package com.cos.blog.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.*;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.sql.Timestamp;
import java.util.List;

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder // 빌더패턴
@Table(name = "META_BOARD")
public class Board {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(nullable = false,length = 100)
    private String title;

    @Lob // 대용량 데이터
    private String content; // 섬머노트 라이브러리 <html>태그가 섞여서 디자인이 됨.

		// @ColumnDefault("0")
    private int count;

    @ManyToOne(fetch = FetchType.EAGER) // Many = Board, User = One
    @JoinColumn(name="userId")
    private  User user; // DB는 오브젝트를 저장할 수 없다 . FK, 자바는 오브젝트를 저장할 수 있다.


    @CreationTimestamp
    private Timestamp createDate;

}

 

'강의 따라하기 > blog' 카테고리의 다른 글

24. 연관관계의 주인  (0) 2024.01.01
23. Reply 테이블 생성  (1) 2024.01.01
20. User 테이블 생성  (0) 2024.01.01
19 yaml 설정하기  (1) 2024.01.01
18 lombok 세팅 및 사용해보기  (0) 2024.01.01

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기