글 작성 폼을 조금 더 완성도 있게 작성하기 위해서 summerNote를 사용했다.
writeForm.html
<!DOCTYPE html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/default_layout}">
<div layout:fragment="content">
<!-- Section-->
<section class="container">
<h1>글 작성</h1>
<form action="/board/save" method="post">
<div class="form-group">
<label for="title"> 제목 : </label>
<input type="text" class="form-control" id="title" placeholder="제목을 작성하세요" name="title">
</div>
<br>
<div class="form-group">
<label for="summernote"> 내용 : </label>
<textarea id="summernote" name="content"></textarea>
</div>
</br>
<button type="submit" class="btn btn-primary">글 작성</button>
</form>
<script>
// 메인화면 페이지 로드 함수
$(document).ready(function () {
$('#summernote').summernote({
placeholder: '내용을 작성하세요',
height: 400,
maxHeight: 400
});
});
</script>
</section>
</div>
board Entity
package com.example.board_project.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import org.springframework.data.annotation.CreatedDate;
import javax.persistence.*;
import java.sql.Timestamp;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Builder
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(nullable = false)
private String title;
@Column(nullable = false)
private String content;
@Column
private int hit; //board 가 작성되는 순간 0 으로 설정
@Column(nullable = false)
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "userId")
private User user;
@Column
@OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.REMOVE)
@JoinColumn(name = "replyList")
private List<Reply> replyList;
@CreationTimestamp
private Timestamp createTime;
}
reply Entity
package com.example.board_project.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.sql.Timestamp;
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Reply {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(nullable = false)
private String content;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "userId")
@Column(nullable = false)
private User user;
@Column
private int hits;
// private Board board; board를 추가하는 것이 맞을까 board한테 reply 목록이 있기때문에 고민
@CreationTimestamp
private Timestamp createTime;
}