[인프런 워밍업 클럽_0기 BE] 세번째 발자국 남기기

[인프런 워밍업 클럽_0기 BE] 세번째 발자국 남기기

강의 수강 요약

Day10. 객체지향과 JPA 연관관계

누가 주인인가? 누가 상대방을 가르키고 있는가? N:1관계에서 N이 연관관계의 주인으로 채택된다.

team과 member의 경우에는 member가 팀의 id를 가지고 있게 되므로 연관관계의 주인은 member이다. 연관관계의 주인이 아닌 쪽 team의 entity에 mappedBy="team"를 써줘야한다. 주인이 아니므로 연결된 객체(id)를 가지고 있지 않게되고, 이를 이어주려면 무슨기준으로 이어져있는지 맵핑한다는 느낌으로 이해했다.

솔직히 1:N이면 1이 주인인게 쉬운데...

요약하자면 연관관계에서 상대방의 데이터(id)를 들고있는 쪽 하나, 그리고 mappedBy로 이어놓은 곳 하나. 양쪽이 필요하다.

JPA 연관관계 어노테이션

@OneToOne, @ManyToOne, @OneToMany를 사용해 객체를 연결한다.

  • cascade와 orphanRemoval을 통해 객체의 삭제 및 업데이트 옵션을 지정할 수 있다.

@JoinColumn

  • 주인이 가지며, nullable, unique와 같이 외래키 설정 등을 가진다.

지연로딩

  • fetch옵션을 더 공부해봐야 겠다.

Day11. 기본적인 배포를 위한 준비, Day12. AWS와 EC2 배포

기존에 배포를 해본 경험으로 쉽게 이해했다.

properties설정으로 개발/배포 등 버전을 나누는 법에 대해 배웠으나, 꼭 필요한 배포시 데이터 숨김에 대한 내용이 없어 아쉬웠다. GPT야 도와줘

Day13. SpringBoot 설정 및 버전업

가장 어려운 설정부분과 프레임워크에 대해 알아보았다.

Day14. 마무리 및 꿀팁

백엔드의 길은 멀다. 나는 빌드 테스트와 성능 테스트에 대해 더 공부해볼 것 같다.

 

회고

Java의 어노테이션에서 핵심적인 기능을 정의한다는 것에 신기했다. 프론트엔드를 지금까지 공부해본 결과 이를 대응할 것은 hook정도인데, 그 직관성이 어노테이션에 비교하면 많이 부족하다고 생각된다. 다양한 코드와 패러다임을 느낄 수 있는 소중한 스터디이자 강의였다.

 

미니프로젝트 해결과정

프로젝트 링크 : https://github.com/heisje/team-attendance

미니 프로젝트 회고

강의 들을땐 쉬웠지, 하지만 직접 개발하려니 막막했다.. 연관관계의 주인.. mappedBy.. JoinColumn.. 그래도 형식이 존재하니 연관관계를 맺고 푸는 것은 어찌저찌 할 수 있었다. 하지만 꼭 맺어야할까? 에서 다시 막혔다. 연관관계를 설정하면 참조는 쉬워지지만, 복잡도는 증가해서 시간이 많이 걸린다고 한다.. 백엔드의 길은 험난하군. 모든 방법을 테스트해서 가장 빠른 결과를 내는 방법을 선택하는 것이 좋겠지만, 바쁜 백엔드 개발자는 할 수 없으니 직감적으로 선택을 해야하는 과제가 있을 것이다.

아마 옛날 프로그램들이 느린건 이런 복잡한 쿼리들로 인해 데이터 불러오는 것이 느리기 때문이겠지.. 하며 공부의 필요성을 느꼈다.

댓글을 작성해보세요.