diff --git a/week09/keyword/keyword.md b/week09/keyword/keyword.md new file mode 100644 index 0000000..f146136 --- /dev/null +++ b/week09/keyword/keyword.md @@ -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가 제공하는 가장 강력한 객체지향적 기능 중 하나**로, 연관된 데이터들을 객체처럼 자연스럽게 탐색할 수 있게 해주는 개념이다. + +하지만 이를 올바르게 활용하기 위해서는 연관관계 설계와 로딩 전략에 대한 충분한 이해가 필요하다. \ No newline at end of file diff --git a/week09/mission/mission.md b/week09/mission/mission.md new file mode 100644 index 0000000..e9b0d87 --- /dev/null +++ b/week09/mission/mission.md @@ -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 \ No newline at end of file