From fda06b8c722a9439aff31beb7600259caa5aaa31 Mon Sep 17 00:00:00 2001 From: kim Date: Fri, 29 Jan 2021 16:26:05 +0900 Subject: [PATCH] jpablog : create entity --- .../java/com/example/jpablog/model/Board.java | 43 +++++++++++++++++++ .../java/com/example/jpablog/model/Reply.java | 35 +++++++++++++++ .../java/com/example/jpablog/model/Role.java | 5 +++ .../java/com/example/jpablog/model/User.java | 38 ++++++++++++++++ .../example/jpablog/test/ControllerTest.java | 19 ++++++++ ...ollerTest.java => RestControllerTest.java} | 7 +-- jpablog/src/main/resources/application.yml | 31 ++++++++++++- jpablog/src/main/resources/static/home.html | 10 +++++ .../src/main/webapp/WEB-INF/views/test.jsp | 1 + 9 files changed, 185 insertions(+), 4 deletions(-) create mode 100644 jpablog/src/main/java/com/example/jpablog/model/Board.java create mode 100644 jpablog/src/main/java/com/example/jpablog/model/Reply.java create mode 100644 jpablog/src/main/java/com/example/jpablog/model/Role.java create mode 100644 jpablog/src/main/java/com/example/jpablog/model/User.java create mode 100644 jpablog/src/main/java/com/example/jpablog/test/ControllerTest.java rename jpablog/src/main/java/com/example/jpablog/test/{HttpControllerTest.java => RestControllerTest.java} (75%) create mode 100644 jpablog/src/main/resources/static/home.html create mode 100644 jpablog/src/main/webapp/WEB-INF/views/test.jsp diff --git a/jpablog/src/main/java/com/example/jpablog/model/Board.java b/jpablog/src/main/java/com/example/jpablog/model/Board.java new file mode 100644 index 00000000..f8b766be --- /dev/null +++ b/jpablog/src/main/java/com/example/jpablog/model/Board.java @@ -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 = new ArrayList<>(); + + @CreationTimestamp + private LocalDateTime createDate; +} diff --git a/jpablog/src/main/java/com/example/jpablog/model/Reply.java b/jpablog/src/main/java/com/example/jpablog/model/Reply.java new file mode 100644 index 00000000..239e1654 --- /dev/null +++ b/jpablog/src/main/java/com/example/jpablog/model/Reply.java @@ -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; +} diff --git a/jpablog/src/main/java/com/example/jpablog/model/Role.java b/jpablog/src/main/java/com/example/jpablog/model/Role.java new file mode 100644 index 00000000..28aba585 --- /dev/null +++ b/jpablog/src/main/java/com/example/jpablog/model/Role.java @@ -0,0 +1,5 @@ +package com.example.jpablog.model; + +public enum Role { + ADMIN, USER, MANAGER +} diff --git a/jpablog/src/main/java/com/example/jpablog/model/User.java b/jpablog/src/main/java/com/example/jpablog/model/User.java new file mode 100644 index 00000000..b1388904 --- /dev/null +++ b/jpablog/src/main/java/com/example/jpablog/model/User.java @@ -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; +} diff --git a/jpablog/src/main/java/com/example/jpablog/test/ControllerTest.java b/jpablog/src/main/java/com/example/jpablog/test/ControllerTest.java new file mode 100644 index 00000000..ec7e9194 --- /dev/null +++ b/jpablog/src/main/java/com/example/jpablog/test/ControllerTest.java @@ -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"; + } +} diff --git a/jpablog/src/main/java/com/example/jpablog/test/HttpControllerTest.java b/jpablog/src/main/java/com/example/jpablog/test/RestControllerTest.java similarity index 75% rename from jpablog/src/main/java/com/example/jpablog/test/HttpControllerTest.java rename to jpablog/src/main/java/com/example/jpablog/test/RestControllerTest.java index c29cfa4f..5e7ffce3 100644 --- a/jpablog/src/main/java/com/example/jpablog/test/HttpControllerTest.java +++ b/jpablog/src/main/java/com/example/jpablog/test/RestControllerTest.java @@ -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 postTest(@RequestBody Member member) { + return new ResponseEntity<>(member, HttpStatus.OK); } @PutMapping("/http/put") diff --git a/jpablog/src/main/resources/application.yml b/jpablog/src/main/resources/application.yml index 90418503..aa07b69e 100644 --- a/jpablog/src/main/resources/application.yml +++ b/jpablog/src/main/resources/application.yml @@ -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 \ No newline at end of file diff --git a/jpablog/src/main/resources/static/home.html b/jpablog/src/main/resources/static/home.html new file mode 100644 index 00000000..f982faee --- /dev/null +++ b/jpablog/src/main/resources/static/home.html @@ -0,0 +1,10 @@ + + + + + Title + + +

home.html

+ + \ No newline at end of file diff --git a/jpablog/src/main/webapp/WEB-INF/views/test.jsp b/jpablog/src/main/webapp/WEB-INF/views/test.jsp new file mode 100644 index 00000000..b6fc4c62 --- /dev/null +++ b/jpablog/src/main/webapp/WEB-INF/views/test.jsp @@ -0,0 +1 @@ +hello \ No newline at end of file