포스트

LG CNS 부트캠프 학습일지 31일차

학습 내용

  • JPA를 사용해서 블로그 프로젝트 다시 만들기
  • 블로그 글 쓰기 및 읽기 구현
  • 블로그 댓글 읽기, 쓰기, 삭제, 수정 구현

JPA를 사용해서 블로그 프로젝트 다시 만들기

이어서 JPA를 사용하는 방법을 배웠다. 자료가 일대다의 관계에 있을 때 엔티티를 구성하는 방법을 숙지하고 있어야 한다. 단순히 단방향으로 관계를 만들어주는 것이 아니었다. 예를 들어 UserEntityBlogEntity가 일대다의 관계를 맺고 있다고 해보자. 간단히 말해 사용자 한 명이 여러 블로그 글을 쓸 수 있는 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class UserEntity {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private email;

	...

	@OneToMany(mappedBy = "author")
	private List<BlogEntity> blog;
}

class BlogEntity {
	...

	@ManyToOne()
	@JoinColumn(name = "email")
	private UserEntity author;
}

UserEntity 쪽에서는 @OneToMany 어노테이션을 사용해서 BlogEntity와 일대다의 관계를 가지고 있다는 것을 알려주고 UserEntity#author 필드에 연결시켜준다. BlogEntity 쪽에서는 @ManyToOne@JoinColumn 어노테이션을 사용하고 UserEntityemail이라는 이름의 필드로 관계가 있다는 것을 명시한다.

나중에 스스로 JPA를 사용하게 된다면 아무런 참고자료 없이 이런 코드를 작성할 수 있을 것 같지는 않지만 적어도 양방향으로 그 관계를 명시해주어야 한다는 것을 기억한다면 적어도 실수는 줄일 수 있을 것 같다.

Webstorm 디버거를 사용해서 문제 해결하기

어제 Webstorm의 디버거를 사용하는 방법을 정리해봤다. 운이 좋게도 오늘 바로 사용해볼 수 있었다. 블로그 포스트에 댓글을 달면 그 댓글이 바로 표시되지 않는 문제가 있었다. 웹브라우저를 새로고침하면 새로 추가한 댓글이 정상적으로 표시된다. 원인은 프론트엔드가 백엔드에서 받는 자료형이 다르기 때문이었다. 기존 프론트엔드 코는 댓글을 새로 추가할 때, 백엔드에서 새로 추가한 댓글만 받고 있었다. 하지만 백엔드는 새로운 댓글 리스트를 반환하고 있었고, 프론트엔드는 이 리스트를 받아서 자기가 가지고 있는 리스트에 그대로 넣고 있었기 때문에 새로운 댓글이 표시되지 않고 있던 것이었다.

부연하자면 MyBatis와 JPA를 사용해서 백엔드를 두 가지 버전으로 만들었다. 만약 백엔드 엔드포인트를 변경하지 않았다면 괜찮았을텐데, 수업이 그렇게 진행되지 않았기 때문에 이래저래 혼란이 있었다. 덜컥 겁이 났다. 나중에 팀프로젝트를 할 때 분명히 프론트엔드와 백앤드 사이에 통신이 의도한대로 이루어지지 않아서 버그가 발생할 것이다. 팀원들 사이에 소통이 원활하게 이루어져야 할 것인데, 내가 임의로 코드를 수정하거나 API를 변경해서 불필요한 분란이 벌어지지 않도록 주의해야겠다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Comments powered by Disqus.