728x90
반응형
Creating Post Entity and Many to One Relationship with User Entity
사용자 관리 어플리케이션에 게시물 관련 기능 추가
User : Posts -> 1 : (0~N), Main : Sub -> Parent : Child 관계
1) Post Entity class 생성 (-> User user 정보 추가)
package com.example.restfulwebservice.user;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.FetchType;
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Post {
@Id
@GeneratedValue
private Integer id;
// 게시물 내용
private String description;
@JsonIgnore
// 외부에 데이터 노출하지 않기위해
@ManyToOne(fetch = FetchType.LAZY)
// User : Posts -> 1 : (0~N), Main : Sub -> Parent : Child
// LAZY : 지연 로딩 방식
// 매번 데이터를 로딩하는것이 아니라 Post 데이터가 필요한 시점에 user(사용자)데이터를 가져오겠다는 뜻
private User user;
}
2) User domain class에서 List<Post> posts; 필드 추가
// 사용자가 포스팅할 수 있는 정보를 저장하는 필드
@OneToMany(mappedBy = "user")
private List<Post> posts;
3) data.sql에서 초기 데이터값 설정
insert into user values(99991,sysdate(),'User1','test1111','750411-111111');
insert into user values(99992,sysdate(),'User2','test2222','850411-111111');
insert into user values(99993,sysdate(),'User3','test3333','950411-111111');
insert into post values(10001, 'My first post',99991);
insert into post values(10002, 'My second post',99991);
※에러발생※
- 오류 해결 방법 : User domain class에 생성자 추가
방금 추가한 posts 필드를 가지고 있지않은 생성자를 추가해주기
public User(int id, String name, Date joinDate, String password, String ssn) {
this.id=id;
this.name=name;
this.joinDate=joinDate;
this.password=password;
this.ssn=ssn;
}
4) 데이터 추가 확인 해주기
728x90
반응형