Skip to content
This repository has been archived by the owner on Aug 13, 2022. It is now read-only.

Commit

Permalink
[#20] 게시물에 대한 전반적인 도메인 생성
Browse files Browse the repository at this point in the history
- 게시물, 댓글, 좋아요, 좋아요 클릭 유저 Entity 생성
- BaseTimeEntity class 생성하여 생성 날짜, 수정 날짜 자동으로 변경
  • Loading branch information
choitaehoon committed Dec 19, 2020
1 parent 0de66cf commit 04819ac
Show file tree
Hide file tree
Showing 7 changed files with 140 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,20 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

/*
@EnableAspectJAutoProxy
AspectJ의 @Aspect를 handling 할 수 있도록 지원해준다. Spring AOP는 메서드 실행의 기능만 사용 할 수 있지만
AspectJ는 메서드 호출, 메서드 실행, 생성자 호출등 다양한 기능을 제공해주고 있다. 또한 AspectJ는 컴파일 시점에서 Weaving을 하기 때문에
spring AOP보다 비교적 더 좋은 성능을 낸다.
@EnableJpaAuditing
JPA Auditing 어노테이션을 활성화 하는 기능
*/
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableJpaAuditing
public class InstagramSocialApplication {

public static void main(String[] args) {
Expand Down
10 changes: 3 additions & 7 deletions src/main/java/com/social/instagram/domain/Post.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,21 @@
package com.social.instagram.domain;

import com.social.instagram.domain.time.BaseTimeEntity;
import com.social.instagram.dto.PostDto;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.time.LocalDateTime;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Post {
public class Post extends BaseTimeEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand All @@ -26,10 +25,7 @@ public class Post {

private String comment;

@CreationTimestamp
private LocalDateTime createTime;

private long nice;
private String fileName;

@Builder
public Post(String userId, String comment) {
Expand Down
20 changes: 20 additions & 0 deletions src/main/java/com/social/instagram/domain/PostNice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.social.instagram.domain;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class PostNice {

@Id
private long postId;

long nice;

}
25 changes: 25 additions & 0 deletions src/main/java/com/social/instagram/domain/PostNiceClick.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.social.instagram.domain;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class PostNiceClick {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

private long postId;

private String niceClickUserId;

}
30 changes: 30 additions & 0 deletions src/main/java/com/social/instagram/domain/Reply.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.social.instagram.domain;

import com.social.instagram.domain.time.BaseTimeEntity;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Reply extends BaseTimeEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

private long postId;

private String userId;

private String comment;

private long nice;

}
27 changes: 27 additions & 0 deletions src/main/java/com/social/instagram/domain/ReplyNiceClick.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.social.instagram.domain;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class ReplyNiceClick {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

private long post_id;

private String userId;

private String niceClickUserId;

}
30 changes: 30 additions & 0 deletions src/main/java/com/social/instagram/domain/time/BaseTimeEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.social.instagram.domain.time;

import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;

/*
@MappedSuperclass
BaseTimeEntity class 아래에 정의된 변수를 컬럼으로 인식
@EntityListeners
BaseTimeEntity class Auditing 기능을 포함하여 자동으로 시간에 대한 값을 넣어주는 기능
*/
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeEntity {

@CreatedDate
private LocalDateTime createdTime;

@LastModifiedDate
private LocalDateTime modifiedTime;

}

0 comments on commit 04819ac

Please sign in to comment.