Object Graph

2023. 6. 3. 18:09High Level Programming Language

객체 그래프(Object Graph)는 객체들 간의 관계를 시각적으로 또는 개념적으로 표현한 구조입니다. 객체 그래프는 프로그램 내에서 객체들이 서로 연결된 방식, 즉 객체들이 다른 객체를 참조하거나 소유하는 방식들을 나타냅니다.

주요 개념:

  • 객체와 관계: 객체 그래프는 개별 객체들(노드)과 그 객체들 간의 관계(엣지)로 구성됩니다. 객체는 필드를 통해 다른 객체를 참조할 수 있는데, 이러한 참조 관계가 객체 그래프의 엣지를 형성합니다.
  • 중첩 객체: 클래스의 필드가 다른 객체를 포함하고 있을 때, 해당 객체가 그래프에서 부모 객체와 연결됩니다. 예를 들어, Person 클래스가 Address 객체를 필드로 가지고 있다면, PersonAddress 간에는 그래프상에서 연결이 존재하게 됩니다.
  • 순환 관계: 객체 그래프에는 객체가 스스로를 직접 또는 간접적으로 참조하는 순환 구조가 포함될 수 있습니다.

예시:

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;
}

위의 예시에서, PersonAddress 객체를 가지고 있고, AddressCity 객체를 포함하고 있습니다. 이들 간의 관계는 다음과 같은 객체 그래프로 표현될 수 있습니다:

  • PersonAddressCity

객체 그래프와 보안 문제:

객체 그래프가 문제될 수 있는 이유는 객체의 깊은 내부에 위치한 민감한 정보나 속성들이 외부로 노출될 가능성 때문입니다. 예를 들어, 사용자 정보를 바인딩할 때, 객체 그래프 전체가 노출되거나 불필요한 내부 객체들이 외부에서 수정될 수 있습니다. 이런 경우, 개발자는 바인딩할 속성에 대해 신중하게 선택하고, 필요에 따라 접근을 제한해야 합니다.

이러한 맥락에서, 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