수업/└team프로젝트
[00]샘플 Entity
onlyun
2022. 3. 28. 17:47
@ERD를 위해 테이블 자동 생성해주는 Entity 사용
@manytoone이랑 @joincolumn 사용
1. 프로젝트 설정
(1) Project
-name : second
(2) pom.xml
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
(3) application.properties
server.port=8087
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/busan_db?useSSL=false&serverTimezon=Asia/Seoul&&characterEncoding=UTF-8
spring.datasource.username=sec
spring.datasource.password=1234
#LAZY loading erreor
spring.jackson.serialization.fail-on-empty-beans=false
spring.jpa.properties.hibernate.show_sql=true
#spring.jpa.properties.hibernate.format_sql=true
#logging.level.org.hibernate.type.descriptor.sql=trace
spring.jpa.hibernate.ddl-auto=create
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
(4) DB(MySQL)
2. Entity
(1) Board
package com.group.second.entity;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
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 javax.persistence.OneToOne;
import javax.persistence.Table;
import lombok.Data;
@Entity
@Data
@Table(name="board")
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="bno")
private Long id;
private String writer; // User userid
private String title;
@Lob
private String content;
private Date regdate;
private int hitcount;
private String role;
//User Mapping
@ManyToOne
@JoinColumn(name="userid") //user와 연결된 것의 이름을 지정한 것이지 User의 컬럼명과 매칭한 것 아님. 매칭은 User의 PK와 연결됨.
private User user;
@ManyToOne
@JoinColumn(name="curri_course")
private Curriculum curriculum;
}
└@ManyToOne과 @JoinColumn 사용할 때, 클래스와 필드명으로 사용.
(2) User
package com.group.second.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import com.group.second.constant.Role;
import lombok.Data;
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id; //user number
private String userid;
@Column(name="password")
private String pass;
private String username; //닉넴
@Enumerated(EnumType.STRING)
private Role role;
private Date regdate;
}
(3) Reply
package com.group.second.entity;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
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 javax.persistence.Table;
import lombok.Data;
@Entity
@Data
@Table(name="reply")
public class Reply {
@Id
@Column(name="rno")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Lob
private String reply;
private Date regdate;
private String replyer;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="user_id")
private User user;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="bno")
private Board board; //bno
}
(4) Role - enum
package com.group.second.constant;
public enum Role {
ADMIN, MANAGER, STUDENT
}
(5) Curriculum
package com.group.second.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import lombok.Data;
@Entity
@Data
public class Curriculum {
@Id
@Column(name="curri_id")
private long course;
// private String course; //강좌명
private String teacher; //강사 이름
private String content; //내용
private String term; //기간
// private String endDate; //종료일
}
(6) File
package com.group.second.entity;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import lombok.Data;
@Entity
@Data
@Table(name="file")
public class File {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String savefolder;
private String originfile;
private String filecontent;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="bno")
private Board board;
}