유저 프로필 이미지(1개만 등록가능)
게시글 이미지(여러개 등록 가능)
이렇게 있다고 할 때
전에는 게시글에도 이미지 1개만 등록하도록 했어서 그냥 둘 다 엔티티에 이미지 경로만 String으로 뒀었는데
이번에 리팩토링 하면서 게시글에 이미지를 여러개 등록할 수 있도록 하려고 합니다
그래서 이미지 엔티티를 따로 만들어서
@Entity
public class Post {
@Id @GeneratedValue
private Long id;
private String title;
private String content;
@OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Image> images = new ArrayList<>();
}
@Entity
public class Image {
@Id @GeneratedValue
private Long id;
private String imagePath;
@ManyToOne
@JoinColumn(name = "post_id")
private Post post;
}
이렇게 두려고 하는데
저 엔티티를 게시글이랑 유저 프로필 이미지 모두에 쓰게 할 수 있는 방법이 뭐가 베스트일까요
1. 부모 이미지 엔티티 하나 만들고 상속받는 프로필 이미지, 게시글 이미지를 만든다 (single_table or join)
2. 그냥 게시글만 이미지 엔티티랑 연관관계 가지게 하고 프로필은 그대로 경로만 가지게 둔다
2번이 그냥 성능상으로나 DB저장공간 상으로나 더 위인것 같은데
뭔가 둘다 이미지인데 하나는 엔티티로 하고 하나는 경로만 띡 저장하니까 균일성이 깨지는것같아서 고민되네요
이미지 객체 상속받아서 써라
전략은 싱글로 할까요 조인으로 할까요 싱글로 해도 postId나 userId 중에 하나만 null로 되는거라 크게 용량 낭비는 되지 않을것같긴한데
연관관계 안맺고 Long 타입으로 두고 type 필드 추가로 생성해서 type: POST, refId: postId 이런식으로 써도 되고, 위 말처럼 상속해도 되고