#16 board : entity - article
This commit is contained in:
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
18
board/src/main/java/com/example/board/config/JpaConfig.java
Normal file
18
board/src/main/java/com/example/board/config/JpaConfig.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package com.example.board.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.domain.AuditorAware;
|
||||
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@EnableJpaAuditing
|
||||
@Configuration
|
||||
public class JpaConfig {
|
||||
|
||||
@Bean
|
||||
public AuditorAware<String> auditorAware() {
|
||||
return () -> Optional.of("bobby"); // TODO: 인증기능 구현 시 수정
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,80 @@
|
||||
package com.example.board.domain;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import org.springframework.data.annotation.CreatedBy;
|
||||
import org.springframework.data.annotation.CreatedDate;
|
||||
import org.springframework.data.annotation.LastModifiedBy;
|
||||
import org.springframework.data.annotation.LastModifiedDate;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@Table(indexes = {
|
||||
@Index(columnList = "title"),
|
||||
@Index(columnList = "hashtag"),
|
||||
@Index(columnList = "createdAt"),
|
||||
@Index(columnList = "createdBy")
|
||||
})
|
||||
@Entity
|
||||
public class Article {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Setter
|
||||
@Column(nullable = false)
|
||||
private String title; // 제목
|
||||
|
||||
@Setter
|
||||
@Column(nullable = false, length = 10000)
|
||||
private String content; // 본문
|
||||
|
||||
@Setter
|
||||
private String hashtag; // 해시태그
|
||||
|
||||
@CreatedDate
|
||||
@Column(nullable = false)
|
||||
private LocalDateTime createdAt; // 생성일시
|
||||
|
||||
@CreatedBy
|
||||
@Column(nullable = false, length = 100)
|
||||
private String createdBy; // 생성자
|
||||
|
||||
@LastModifiedDate
|
||||
@Column(nullable = false)
|
||||
private LocalDateTime modifiedAt; // 수정일시
|
||||
|
||||
@LastModifiedBy
|
||||
@Column(nullable = false, length = 100)
|
||||
private String modifiedBy; //수정자
|
||||
|
||||
protected Article() {}
|
||||
|
||||
private Article(String title, String content, String hashtag) {
|
||||
this.title = title;
|
||||
this.content = content;
|
||||
this.hashtag = hashtag;
|
||||
}
|
||||
|
||||
public static Article of(String title, String content, String hashtag) {
|
||||
return new Article(title, content, hashtag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (!(o instanceof Article article)) return false;
|
||||
return id != null && id.equals(article.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user