Skip to content

Commit

Permalink
feat: BaseEntity, WrappedId 추가
Browse files Browse the repository at this point in the history
- id 관련 메서드(ex. 비교, null 검증) 재사용
  • Loading branch information
sejeongsong committed Nov 13, 2023
1 parent 10f1cc8 commit 1f573e8
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 6 deletions.
2 changes: 2 additions & 0 deletions be/src/main/java/com/foodymoody/be/BeApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@SpringBootApplication
@EnableJpaAuditing
public class BeApplication {

public static void main(String[] args) {
Expand Down
17 changes: 17 additions & 0 deletions be/src/main/java/com/foodymoody/be/common/BaseEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.foodymoody.be.common;

import java.time.LocalDateTime;
import javax.persistence.EmbeddedId;
import javax.persistence.MappedSuperclass;
import org.springframework.data.annotation.CreatedDate;

@MappedSuperclass
public class BaseEntity {

@EmbeddedId
protected WrappedId id;

@CreatedDate
protected LocalDateTime createdAt;

}
55 changes: 55 additions & 0 deletions be/src/main/java/com/foodymoody/be/common/WrappedId.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.foodymoody.be.common;

import io.jsonwebtoken.lang.Assert;
import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Embeddable;

@Embeddable
public class WrappedId implements Serializable {

protected String id;

public WrappedId() {
}

public WrappedId(String id) {
Assert.notNull(id);
this.id = id;
}

public String getId() {
return id;
}

public boolean equals(String id) {
if (Objects.isNull(id)) {
return false;
}
return this.id.equals(id);
}

public void assertEquals(String id) {
if (!equals(id)) {
// TODO 적절한 예외 메세지 추가
throw new IllegalArgumentException();
}
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof WrappedId)) {
return false;
}
WrappedId wrappedId = (WrappedId) o;
return Objects.equals(getId(), wrappedId.getId());
}

@Override
public int hashCode() {
return Objects.hash(getId());
}
}
14 changes: 8 additions & 6 deletions be/src/main/java/com/foodymoody/be/member/domain/Member.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
package com.foodymoody.be.member.domain;

import com.foodymoody.be.common.BaseEntity;
import com.foodymoody.be.common.WrappedId;
import com.foodymoody.be.common.exception.IncorrectMemberPasswordException;
import com.foodymoody.be.common.exception.InvalidReconfirmPasswordException;
import com.foodymoody.be.image.domain.Image;
import com.foodymoody.be.mood.domain.Mood;
import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.EntityListeners;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import lombok.NoArgsConstructor;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

@Entity
@NoArgsConstructor
public class Member {
@EntityListeners(AuditingEntityListener.class)
public class Member extends BaseEntity {

@Id
private String id;
private String email;
private String nickname;
private String password;
Expand All @@ -28,7 +30,7 @@ public class Member {
private Mood mood;

private Member(String id, String email, String nickname, String password, Mood mood) {
this.id = id;
this.id = new WrappedId(id);
this.email = email;
this.nickname = nickname;
this.password = password;
Expand All @@ -43,7 +45,7 @@ public static Member of(String id, String email, String nickname, String passwor
}

public String getId() {
return id;
return id.getId();
}

public String getEmail() {
Expand Down

0 comments on commit 1f573e8

Please sign in to comment.