Skip to content

Commit

Permalink
전체 Entity 연관관계 매핑, Auditing 기능 추가 (#13)
Browse files Browse the repository at this point in the history
* feat: (#12) 전체 Entity 연관관계 매핑, Auditing 기능 추가

* refactor: (#12) DB의 MySQL 방언 설정을 MySQL57Dialect 대신 MySQLDialect를 설정하는 것으로 개선

* feat: (#12) JPA를 통해 insert되는 값을 확인하기 위한 설정 추가


Co-authored-by: jeomxon <jeomxon@gmail.com>
Co-authored-by: woo-chang <clllickme@naver.com>
Co-authored-by: aiaiaiai1 <cvc100326@naver.com>
  • Loading branch information
4 people authored Jul 8, 2023
1 parent 204b277 commit b7bd2e0
Show file tree
Hide file tree
Showing 10 changed files with 92 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.votogether.domain.category.entity;

import com.votogether.domain.common.BaseEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
Expand All @@ -13,7 +14,7 @@
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class Category {
public class Category extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand Down
25 changes: 25 additions & 0 deletions backend/src/main/java/com/votogether/domain/common/BaseEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.votogether.domain.common;

import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import java.time.LocalDateTime;
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {

@CreatedDate
@Column(columnDefinition="datetime(2)", updatable = false, nullable = false)
private LocalDateTime createdAt;

@LastModifiedDate
@Column(columnDefinition="datetime(2)", nullable = false)
private LocalDateTime updatedAt;

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.votogether.domain.member.entity;

import com.votogether.domain.common.BaseEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
Expand All @@ -16,7 +17,7 @@
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class Member {
public class Member extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.votogether.domain.member.entity;

import com.votogether.domain.category.entity.Category;
import com.votogether.domain.common.BaseEntity;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
Expand All @@ -15,7 +17,7 @@
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class MemberCategory {
public class MemberCategory extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand All @@ -25,12 +27,14 @@ public class MemberCategory {
@JoinColumn(name = "member_id", nullable = false)
private Member member;

private Long categoryId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "category_id", nullable = false)
private Category category;

@Builder
private MemberCategory(final Member member, final Long categoryId) {
private MemberCategory(final Member member, final Category category) {
this.member = member;
this.categoryId = categoryId;
this.category = category;
}

}
17 changes: 12 additions & 5 deletions backend/src/main/java/com/votogether/domain/post/entity/Post.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package com.votogether.domain.post.entity;

import com.votogether.domain.common.BaseEntity;
import com.votogether.domain.member.entity.Member;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import java.time.LocalDateTime;
import lombok.AccessLevel;
import lombok.Builder;
Expand All @@ -14,31 +19,33 @@
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class Post {
public class Post extends BaseEntity {

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

private Long memberId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id", nullable = false)
private Member member;

@Column(length = 100, nullable = false)
private String title;

@Column(length = 1000, nullable = false)
private String content;

@Column(nullable = false)
@Column(columnDefinition="datetime(2)", nullable = false)
private LocalDateTime deadline;

@Builder
private Post(
final Long memberId,
final Member member,
final String title,
final String content,
final LocalDateTime deadline
) {
this.memberId = memberId;
this.member = member;
this.title = title;
this.content = content;
this.deadline = deadline;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.votogether.domain.post.entity;

import com.votogether.domain.category.entity.Category;
import com.votogether.domain.common.BaseEntity;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
Expand All @@ -15,7 +17,7 @@
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class PostCategory {
public class PostCategory extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand All @@ -25,12 +27,14 @@ public class PostCategory {
@JoinColumn(nullable = false)
private Post post;

private Long categoryId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "category_id", nullable = false)
private Category category;

@Builder
private PostCategory(final Post post, final Long categoryId) {
private PostCategory(final Post post, final Category category) {
this.post = post;
this.categoryId = categoryId;
this.category = category;
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.votogether.domain.post.entity;

import com.votogether.domain.common.BaseEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
Expand All @@ -16,7 +17,7 @@
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class PostOption {
public class PostOption extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand All @@ -27,15 +28,15 @@ public class PostOption {
private Post post;

@Column(nullable = false)
private Long sequence;
private Integer sequence;

@Column(length = 50, nullable = false)
private String content;

@Builder
private PostOption(
final Post post,
final Long sequence,
final Integer sequence,
final String content
) {
this.post = post;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.votogether.domain.vote.entity;

import com.votogether.domain.common.BaseEntity;
import com.votogether.domain.member.entity.Member;
import com.votogether.domain.post.entity.PostOption;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
Expand All @@ -16,7 +18,7 @@
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class Vote {
public class Vote extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand All @@ -26,12 +28,14 @@ public class Vote {
@JoinColumn(name = "member_id", nullable = false)
private Member member;

private Long postOptionId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_option_id", nullable = false)
private PostOption postOption;

@Builder
private Vote(final Member member, final Long postOptionId) {
private Vote(final Member member, final PostOption postOption) {
this.member = member;
this.postOptionId = postOptionId;
this.postOption = postOption;
}

}
1 change: 0 additions & 1 deletion backend/src/main/resources/application.properties

This file was deleted.

23 changes: 23 additions & 0 deletions backend/src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
spring:
datasource:
url: jdbc:h2:~/test;MODE=MySQL
username: sa

jpa:
properties:
hibernate:
format_sql: true
dialect: org.hibernate.dialect.MySQLDialect
show-sql: true

hibernate:
ddl-auto: create

logging:
level:
org:
hibernate:
type:
descriptor:
sql:
BasicBinder: TRACE

0 comments on commit b7bd2e0

Please sign in to comment.