본문 바로가기
Programming/SpringBoot

[Spring Boot] RESTful Service 강의 정리 (18) - 게시물 관리를 위한 Post Entity 추가와 초기 데이터 생성

by prinha 2020. 8. 27.
반응형

 

 

[Spring Boot] RESTful Service 강의 정리 (17) - JPA를 이용한 사용자 추가와 삭제 - POST/DELETE HTTP Method

[Spring Boot] RESTful Service 강의 정리 (16) - JPA를 이용한 개별 사용자 목록 조회 GET HTTP Method [Spring Boot] RESTful Service 강의 정리 (15) - JPA Service 구현을 위한 Controller, Repository 생성 [..

prinha.tistory.com


 

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);

 

 

※에러발생※

현재 사용하고 있지않은 UserDAOService에서 오류 (현재 작업과 상관은 없지만 같은 User domain class 공유

 

- 오류 해결 방법 : 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) 데이터 추가 확인 해주기

데이터가 정상적으로 insert 되었다는 Console 메시지

 

정상적으로 추가된 데이터

 

 

 

반응형