jpablog : create entity

This commit is contained in:
kim
2021-01-29 16:26:05 +09:00
parent 17a5be0425
commit fda06b8c72
9 changed files with 185 additions and 4 deletions

View File

@@ -0,0 +1,43 @@
package com.example.jpablog.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
public class Board {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 100)
private String title;
@Lob // 대용량 데이터
private String content;
@ColumnDefault("0")
private int count;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
@OneToMany(mappedBy = "board")
private List<Reply> reply = new ArrayList<>();
@CreationTimestamp
private LocalDateTime createDate;
}

View File

@@ -0,0 +1,35 @@
package com.example.jpablog.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
public class Reply {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 200)
private String content;
@ManyToOne
@JoinColumn(name = "board_id")
private Board board;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@CreationTimestamp
private LocalDateTime createDate;
}

View File

@@ -0,0 +1,5 @@
package com.example.jpablog.model;
public enum Role {
ADMIN, USER, MANAGER
}

View File

@@ -0,0 +1,38 @@
package com.example.jpablog.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
public class User {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 프로젝트 에서 연결된 DB의 넘버링 전략 사용
private Long id;
@Column(nullable = false, length = 30)
private String username;
@Column(nullable = false, length = 100)
private String password;
@Column(nullable = false, length = 50)
private String email;
@ColumnDefault("'USER'")
@Enumerated(EnumType.STRING)
private Role role;
@CreationTimestamp
private LocalDateTime createDate;
}

View File

@@ -0,0 +1,19 @@
package com.example.jpablog.test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class ControllerTest {
@GetMapping("/temp/home")
public String tempHome() {
// 파일 리턴 기본경로 : src/main/resources/static
return "/home.html";
}
@GetMapping("/temp/jsp")
public String tempJsp() {
return "/test";
}
}

View File

@@ -1,5 +1,6 @@
package com.example.jpablog.test;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@@ -7,7 +8,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
public class HttpControllerTest {
public class RestControllerTest {
@GetMapping("/http/get")
public String getTest(Member member) {
@@ -15,8 +16,8 @@ public class HttpControllerTest {
}
@PostMapping("/http/post")
public String postTest() {
return "post 요청";
public ResponseEntity<Member> postTest(@RequestBody Member member) {
return new ResponseEntity<>(member, HttpStatus.OK);
}
@PutMapping("/http/put")

View File

@@ -1,6 +1,35 @@
server:
port: 8080
servlet:
context-path: /jpablog
encoding:
charset: UTF-8
enabled: true
force: true
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul
url: jdbc:mysql://localhost:3306/jpablog?serverTimezone=Asia/Seoul
username: jpablog
password: 1234
jpa:
open-in-view: true
hibernate:
ddl-auto: create
# naming:
# physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
use-new-id-generator-mappings: false
show-sql: true
properties:
hibernate.format_sql: true
jackson:
serialization:
fail-on-empty-beans: false

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>home.html</h1>
</body>
</html>

View File

@@ -0,0 +1 @@
hello