앞 과정에서 User resource에 대한 REST API를 만들었다!
그럼 이제, Post resource에 대한 REST API를 만들 시간이다!
Post resource에 대한 REST API의 기능 2가지를 다음 포스팅에 거쳐서 정리해보자!!
@OneToMany(mappedBy = "user")
@JsonIgnore
private List<Post> posts;
public List<Post> getPosts() {
return posts;
}
public void setPosts(List<Post> posts) {
this.posts = posts;
}
@Entity
public class Post {
@Id
@GeneratedValue
private Integer id;
private String description;
@ManyToOne(fetch = FetchType.LAZY)
@JsonIgnore
private User user;
// getters and setters
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
// toString
@Override
public String toString() {
return "Post [id=" + id + ", description=" + description + "]";
}
}
@OneToMany(mappedBy = "user")
@ManyToOne(fetch = FetchType.LAZY)
spring.jpa.show-sql=true
콘솔창에 쿼리문이 보이게 하는 속성
위 설정 추가 이후, 콘솔창에 뜬 쿼리문을 아래와 같이 정리했다.
create sequence post_seq start with 1 increment by 50
create sequence user_details_seq start with 1 increment by 50
create table post
(id integer not null, description varchar(255), user_id integer, primary key (id))
create table user_details
(id integer not null, birth_date date, name varchar(255), primary key (id))
user_details
테이블은, User Entity의 멤버변수만 가지지만,
흥미롭게도, post 테이블
은, Post Entity의 멤버변수뿐만 아니라, 연결된 User 엔디티의 user_id 필드도 같이 만들어진 것을 확인할 수 있었다!
user_details_seq는 User에 @GeneratedValue를 추가했기 때문이고, post_seq 또한 Post에 @GeneratedValue를 추가했기 때문
-> 이 2개의 sequence는, 새 post나 새 user를 생성할 때, id값 생성에 사용된다.
// User
insert into user_details(id,birth_date,name)
values(10001, current_date(), 'minjiki2_sql_1');
insert into user_details(id,birth_date,name)
values(10002, current_date(), 'minjiki2_sql_2');
insert into user_details(id,birth_date,name)
values(10003, current_date(), 'minjiki2_sql_3');
// Post
insert into post(id, description, user_id)
values (20001, 'I want to learn CSS', 10001);
insert into post(id, description, user_id)
values (20002, 'I want to learn JS', 10002);
insert into post(id, description, user_id)
values (20003, 'I want to learn HTML', 10003);
이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/