Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions week09/keyword/keyword.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# 객체 그래프 탐색(Object Graph Navigation) 설명

객체 그래프 탐색(Object Graph Navigation)이란, **엔티티 간의 연관관계를 통해 서로 연결된 객체들을 연속적으로 참조하며 조회하는 방식**을 의미한다. JPA는 관계형 데이터베이스 위에서 동작하지만, 개발자는 SQL이 아닌 **객체 모델 관점**에서 데이터를 다룬다는 특징을 가진다. 이때 중요한 개념이 바로 객체 그래프 탐색이다.

예를 들어, `Order` 엔티티가 `Member` 엔티티와 연관관계를 가진 경우, 개발자는 단순히 `order.getMember()`를 호출함으로써 주문을 생성한 회원 객체까지 접근할 수 있다. 이러한 접근 방식은 객체들이 서로 연결된 구조(그래프)를 따라가는 형태이기 때문에 “객체 그래프 탐색”이라고 부른다.

JPA에서는 이 객체 그래프 탐색이 **투명하게 지원**된다. 즉, 연관된 객체가 데이터베이스에 있는 경우라도, 실제 SQL을 직접 작성하지 않고도 단순히 객체의 참조를 통해 데이터를 조회할 수 있다. 다만 이 과정에서 JPA는 **지연 로딩(LAZY Loading)** 과 같은 기술을 활용하여, 실제로 필요한 시점에만 추가 SQL을 실행해 연관 객체를 가져오는 동작을 수행한다.

객체 그래프 탐색은 객체지향적인 개발 방식을 가능하게 해주지만, 동시에 몇 가지 주의점도 존재한다. 연관관계는 항상 **단방향**이기 때문에 설계된 방향으로만 탐색할 수 있으며, 탐색 범위가 과도하게 넓으면 JSON 직렬화 시 순환 참조 문제나 퍼포먼스 문제가 발생할 수 있다. 이를 해결하기 위해 개발자는 fetch join, DTO 매핑, `@JsonIgnore` 같은 기술을 함께 사용한다.

결론적으로, 객체 그래프 탐색은 **JPA가 제공하는 가장 강력한 객체지향적 기능 중 하나**로, 연관된 데이터들을 객체처럼 자연스럽게 탐색할 수 있게 해주는 개념이다.

하지만 이를 올바르게 활용하기 위해서는 연관관계 설계와 로딩 전략에 대한 충분한 이해가 필요하다.
8 changes: 8 additions & 0 deletions week09/mission/mission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
> **github 링크**
>
>
> https://github.com/Seona12/Feat-Chapter4/tree/Feat/Chapter9
>
>
시니어 미션
> https://velog.io/@seonseon/umc9th-%EA%B3%BC%EC%A0%9C