Object Graph
2023. 6. 3. 18:09ㆍHigh Level Programming Language
객체 그래프(Object Graph)는 객체들 간의 관계를 시각적으로 또는 개념적으로 표현한 구조입니다. 객체 그래프는 프로그램 내에서 객체들이 서로 연결된 방식, 즉 객체들이 다른 객체를 참조하거나 소유하는 방식들을 나타냅니다.
주요 개념:
- 객체와 관계: 객체 그래프는 개별 객체들(노드)과 그 객체들 간의 관계(엣지)로 구성됩니다. 객체는 필드를 통해 다른 객체를 참조할 수 있는데, 이러한 참조 관계가 객체 그래프의 엣지를 형성합니다.
- 중첩 객체: 클래스의 필드가 다른 객체를 포함하고 있을 때, 해당 객체가 그래프에서 부모 객체와 연결됩니다. 예를 들어,
Person
클래스가Address
객체를 필드로 가지고 있다면,Person
과Address
간에는 그래프상에서 연결이 존재하게 됩니다. - 순환 관계: 객체 그래프에는 객체가 스스로를 직접 또는 간접적으로 참조하는 순환 구조가 포함될 수 있습니다.
예시:
class Person {
private String name;
private Address address;
// getters and setters
}
class Address {
private String street;
private City city;
// getters and setters
}
class City {
private String name;
}
위의 예시에서, Person
은 Address
객체를 가지고 있고, Address
는 City
객체를 포함하고 있습니다. 이들 간의 관계는 다음과 같은 객체 그래프로 표현될 수 있습니다:
Person
→Address
→City
객체 그래프와 보안 문제:
객체 그래프가 문제될 수 있는 이유는 객체의 깊은 내부에 위치한 민감한 정보나 속성들이 외부로 노출될 가능성 때문입니다. 예를 들어, 사용자 정보를 바인딩할 때, 객체 그래프 전체가 노출되거나 불필요한 내부 객체들이 외부에서 수정될 수 있습니다. 이런 경우, 개발자는 바인딩할 속성에 대해 신중하게 선택하고, 필요에 따라 접근을 제한해야 합니다.
이러한 맥락에서, Spring의 데이터 바인딩 기능은 객체 그래프의 특정 부분이 외부 요청에 의해 의도치 않게 수정되지 않도록 주의가 필요합니다.
'High Level Programming Language' 카테고리의 다른 글
생성자와 빌더 (0) | 2023.06.04 |
---|---|
Java Advanced Programming Quiz 문제 + 정답 (0) | 2023.06.03 |
Package (0) | 2023.06.03 |
객체 지향 프로그래밍 (0) | 2023.06.03 |
JVM 메모리 구조 (0) | 2023.06.03 |