
BaseEntity
package capoeira.capoeiraweb.entity;
import lombok.Getter;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@Getter
public class BaseEntity {
@CreationTimestamp
@Column(updatable = false) //updatable : 수정한 이후 기존에 저장되어 있던 데이터를 수정할 수 없게끔 막는다.
private LocalDateTime createdTime;
@UpdateTimestamp
@Column(insertable = false) //insertable : 컬럼을 수정한 이후 들어오는 데이터를 막는다.
private LocalDateTime updatedTime;
}
BoardEntity
package capoeira.capoeiraweb.entity;
import capoeira.capoeiraweb.dto.BoardDTO;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
// DB의 테이블 역할을 하는 클래스
@Entity
@Getter
@Setter
@Table(name = "board_table")
//extends BaseEntity 를 상속 받게 한다.
public class BoardEntity extends BaseEntity {
@Id// pk 컬럼 지정. 필수
@GeneratedValue(strategy = GenerationType.IDENTITY) //auto_increment
private Long id;
//length DB를 정의 할때 크기를 정할수있다 nullable not null : 크기는 20, not null지정하는 옵션
@Column(length = 20, nullable = false)
private String boardWriter;
@Column// 크기는 255, null 가능, 유니크(unique = true) 를 컬럼에 적용할수있다
private String boardPass;
@Column
private String boardTitle;
@Column(length = 500)
private String boardContents;
@Column
private int boardHits;
@Column
private int fileAttached; // 1 or 0
@OneToMany(mappedBy = "boardEntity", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.LAZY)
private List<BoardFileEntity> boardFileEntityList = new ArrayList<>();
//새로 추가됨
@OneToMany(mappedBy = "boardEntity", cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.LAZY)
private List<CommentEntity> commentEntityList = new ArrayList<>();
public static BoardEntity toSaveEntity(BoardDTO boardDTO) {
BoardEntity boardEntity = new BoardEntity();
boardEntity.setBoardWriter(boardDTO.getBoardWriter());
boardEntity.setBoardPass(boardDTO.getBoardPass());
boardEntity.setBoardTitle(boardDTO.getBoardTitle());
boardEntity.setBoardContents(boardDTO.getBoardContents());
boardEntity.setBoardHits(0);
boardEntity.setFileAttached(0); // 파일 없음.
return boardEntity;
}
public static BoardEntity toUpdateEntity(BoardDTO boardDTO) {
BoardEntity boardEntity = new BoardEntity();
boardEntity.setId(boardDTO.getId());
boardEntity.setBoardWriter(boardDTO.getBoardWriter());
boardEntity.setBoardPass(boardDTO.getBoardPass());
boardEntity.setBoardTitle(boardDTO.getBoardTitle());
boardEntity.setBoardContents(boardDTO.getBoardContents());
boardEntity.setBoardHits(boardDTO.getBoardHits());
return boardEntity;
}
public static BoardEntity toSaveFileEntity(BoardDTO boardDTO) {
BoardEntity boardEntity = new BoardEntity();
boardEntity.setBoardWriter(boardDTO.getBoardWriter());
boardEntity.setBoardPass(boardDTO.getBoardPass());
boardEntity.setBoardTitle(boardDTO.getBoardTitle());
boardEntity.setBoardContents(boardDTO.getBoardContents());
boardEntity.setBoardHits(0);
boardEntity.setFileAttached(1); // 파일 있음.
return boardEntity;
}
}
BoardFileEntity
package capoeira.capoeiraweb.entity;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Entity
@Getter
@Setter
@Table(name="board_file_table")
public class BoardFileEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String originalFileName;
@Column
private String storedFileName;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "board_id")
private BoardEntity boardEntity;
public static BoardFileEntity toBoardFileEntity(BoardEntity boardEntity, String originalFileName, String storedFileName) {
BoardFileEntity boardFileEntity = new BoardFileEntity();
boardFileEntity.setOriginalFileName(originalFileName);
boardFileEntity.setStoredFileName(storedFileName);
boardFileEntity.setBoardEntity(boardEntity);
return boardFileEntity;
}
}
package capoeira.capoeiraweb.entity;
import capoeira.capoeiraweb.dto.CommentDTO;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Entity
@Getter
@Setter
@Table(name = "comment_table")
public class CommentEntity extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 20, nullable = false)
private String commentWriter;
@Column
private String commentContents;
/* Board:Comment = 1:N */
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "board_id")
private BoardEntity boardEntity;
public static CommentEntity toSaveEntity(CommentDTO commentDTO, BoardEntity boardEntity) {
CommentEntity commentEntity = new CommentEntity();
commentEntity.setCommentWriter(commentDTO.getCommentWriter());
commentEntity.setCommentContents(commentDTO.getCommentContents());
commentEntity.setBoardEntity(boardEntity);
return commentEntity;
}
}
MemberEntity
package capoeira.capoeiraweb.entity;
import capoeira.capoeiraweb.dto.MemberDTO;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Entity
@Setter
@Getter
@Table(name = "member_table")
public class MemberEntity {
// no,pk(@Id) id,uk
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long no;
@Column(unique = true)
private String id;
@Column
private String password;
@Column
private String cagroup;
@Column
private String name;
@Column
private String nickname;
public static MemberEntity toMemberEntity(MemberDTO memberDTO) {
MemberEntity memberEntity = new MemberEntity();
memberEntity.setId(memberDTO.getId());
memberEntity.setPassword(memberDTO.getPassword());
memberEntity.setCagroup(memberDTO.getCagroup());
memberEntity.setName(memberDTO.getName());
memberEntity.setNickname(memberDTO.getNickname());
return memberEntity;
}
}