From 1a18b8d90aa2a7dbdf8fc89b01ee97fd381c8be6 Mon Sep 17 00:00:00 2001 From: jinho jeong Date: Wed, 20 Apr 2022 15:59:55 +0900 Subject: [PATCH] post entity --- .../java/com/example/oneul/model/Post.java | 81 +++++++++++++++++-- .../com/example/oneul/model/UserEntity.java | 9 ++- 2 files changed, 83 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/example/oneul/model/Post.java b/src/main/java/com/example/oneul/model/Post.java index a0baec3..8925dd1 100644 --- a/src/main/java/com/example/oneul/model/Post.java +++ b/src/main/java/com/example/oneul/model/Post.java @@ -2,22 +2,93 @@ package com.example.oneul.model; import java.time.LocalDateTime; +import javax.persistence.Access; +import javax.persistence.AccessType; +import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import javax.persistence.ManyToOne; import org.springframework.data.annotation.CreatedDate; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@NoArgsConstructor @Entity public class Post { @Id @GeneratedValue private Long id; @CreatedDate private LocalDateTime createdAt; + @Column(nullable = false) private String content; + @Access(AccessType.PROPERTY) + @ManyToOne(fetch = FetchType.LAZY, optional = false) + private UserEntity writer; + + public Post(Long id, LocalDateTime createdAt, String content, UserEntity writer){ + this.id = id; + this.createdAt = createdAt; + this.content = content; + this.writer = writer; + } + + public Long getId(){ + return this.id; + } + + public LocalDateTime getCreatedAt(){ + return this.createdAt; + } + + public String getContent(){ + return this.content; + } + + public UserEntity getWriter(){ + return this.writer; + } + + @Override + public String toString(){ + return "Post[" + + "id: " + this.id + + ", createdAt: " + this.createdAt + + ", content: " + this.content + + "writer: " + this.writer.getId() + + "]"; + } + + public static class Builder { + private Long id; + private String content; + private LocalDateTime createdAt; + private UserEntity writer; + + public Post build(){ + return new Post( + id, + createdAt, + content, + writer); + } + public Builder id(Long id){ + this.id = id; + return this; + } + + public Builder createdAt(LocalDateTime createdAt){ + this.createdAt = createdAt; + return this; + } + + public Builder content(String content){ + this.content = content; + return this; + } + + public Builder writer(UserEntity writer){ + this.writer = writer; + return this; + } + } } diff --git a/src/main/java/com/example/oneul/model/UserEntity.java b/src/main/java/com/example/oneul/model/UserEntity.java index 143beaa..4340e7b 100644 --- a/src/main/java/com/example/oneul/model/UserEntity.java +++ b/src/main/java/com/example/oneul/model/UserEntity.java @@ -1,11 +1,14 @@ package com.example.oneul.model; import java.time.LocalDateTime; +import java.util.Set; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; +import javax.persistence.OneToMany; import org.springframework.data.annotation.CreatedDate; @@ -13,13 +16,15 @@ import org.springframework.data.annotation.CreatedDate; public class UserEntity { @Id @GeneratedValue private Long id; - @Column(nullable = false) + @Column(nullable = false, unique = true) private String username; @Column(nullable = false) private String password; @CreatedDate private LocalDateTime createdAt; - + @OneToMany(orphanRemoval = true, cascade = CascadeType.REMOVE) + private Set posts; + public Long getId(){ return this.id; }