Board.java
package com.pure.blog.model;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
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") //userId가 FK로 생성됨
private User user; // DB는 오브젝트를 저장할 수 없다. --> FK 사용. 하지만 자바는 오브젝트를 저장할 수 있다.
@CreationTimestamp
private Timestamp createDate;
}
콘솔 메세지
Hibernate:
create table Board (
id integer not null auto_increment,
content longtext,
count integer default 0 not null,
createDate datetime(6),
title varchar(100) not null,
userId integer,
primary key (id)
) engine=InnoDB
Hibernate:
alter table Board
add constraint FKnwfsptg8pbhl5hnphivfydtpy
foreign key (userId)
references User (id)
자바에서 User user로 생성하였지만 실제 컬럼은 userId integer로 생성된 것을 알 수 있다.
'취업 준비 > Spring boot' 카테고리의 다른 글
11. 연관관계의 주인 (0) | 2022.01.24 |
---|---|
10. Reply 테이블 생성하기 (0) | 2022.01.22 |
8. User 테이블 생성하기 (0) | 2022.01.21 |
7. yml 설정 (0) | 2022.01.21 |
6. lombok의 builder (0) | 2022.01.21 |