2012-05-11 3 views
0

많은 속성을 가진 클래스가 있는데, 어떤 경우에는 다른 복잡한 클래스로 구성됩니다. 필자는 항상이 전체 스키마를 사용하지는 않지만 때로는 그렇게하고 있습니다. 객체를 생성하고 처리 한 다음 필요에 따라 정보를 검색하는 가장 좋은 방법은 무엇입니까?성능을 떨어 뜨리지 않고 객체 내부의 객체를 처리하는 가장 좋은 방법은 무엇입니까?

나는 명확히하기 위해 매우 간단한 예제를주는거야 :

Supose 클래스 professor 관련이 클래스 student. 이 클래스는 classes, schedules 등과 같은 다른 클래스와 관련이 있습니다. 항상이 정보를 모두 사용해야합니다.

나는 student 오브젝트의 교수 ID를 알아 내고 필요할 때 정보를로드합니까? 교수 ID를 저장하기위한 속성을 생성해야합니까? newprofessor 개체를 다른 데이터로로드하지 않고 ID 만 저장하면됩니다. 아니면 둘 다? 가장 좋은 방법은 무엇입니까?

감사합니다.

+1

OO 시스템보다는 RDBMS가 필요합니다. –

답변

0

lazy loading으로 묘사 된 것 같습니다.

+0

그래, 나는 내 프로젝트에 "게으른 감수성"이 필요하다는 것을 알았다. 그러나 부모 개체의 ID를 기준으로 정보 만 저장하는 좋은 방법인지는 모르겠지만 전체 개체의 수명주기를 통해 유지 한 다음 전체 데이터를로드하는 것이 좋습니다. – Alex

+0

데이터가 관계형 데이터베이스 관리 시스템에 저장되어 있습니까? 그렇다면 이상적으로 오브젝트 관계형 맵퍼를 사용하여 오브젝트에 관계형 데이터를로드하고 데이터베이스에 다시 저장해야합니다. – devdigital

+0

이 경우, 교수 유형이 many - to - one 관계에있는 학생 유형 (교수가 교장이되는 관계)이 있으면 ORM은 일반적으로 기본적으로 지연로드를 사용하므로 요청할 것입니다 교수자를위한 데이터베이스의 Id 열은 학생의 교수 유형 속성에 액세스 할 때만 매핑 된 모든 속성을 검색합니다. – devdigital

1

일반적으로 도메인의 엔티티에 가입해야하는 엔티티가 필요합니다. 예를 들어, 학생과 교수/강사 간의 통신을 유지하는 StudentRegistry을 갖게됩니다. 이것은 실제로 당신이 ER DB design method 참조 할 수 있도록 (분명히, 대신 테이블의 수업을합니다.), RDBMS와 스키마 디자인과 유사

2

제안 1

  • 는 응용 프로그램이 & 부하를 저장할 필요합니까 개체의 값은 & 속성 ("직렬화"또는 "지속"이라고도 함)?

  • 애플리케이션에 동일한 클래스의 인스턴스가 여러 개 있어야합니까?

이 질문에 대한 대답이 맞으면 @larsmans가 제시 한대로 D.B.에 데이터를 저장해야하는 것 같습니다.

제안이

또 한가지. 어떤 프로그래밍 언어를 사용하고 있는지 언급하지 않았습니다. C++, Delphi (Object Pascal), D와 같은 프로그래밍 언어에서 다른 객체 내부의 객체는 객체의 일부로 또는 하위 객체에 대한 포인터로 두 가지 방법으로 처리 할 수 ​​있습니다.

귀하의 시나리오에서 개체 접근에 대한 포인터를 사용하는 것이 좋습니다.

Java, PHP, C#, VB.NET과 같은 프로그래밍 언어에서 참조라는 개념이 있습니다. 실제로는 객체에 대한 포인터와 동일하므로 아무 것도 할 필요가 없습니다.

비 포인터 예 :

class SubClass 
{ 
    public: 
    int X; 
    int Y;  
}; // class SubClass 

class MainClass 
{ 
    public: 
    int Color; 
    SubClass SubObject; 

    public: 
    /* constructor */ MainClass() 
    { 
     this.Color = 7; 
     this.SubObject(); 
    } // /* constructor */ MainClass(...) 

    /* destructor */ ~MainClass() 
    { 
     this.~SubObject(); 
     this.Color = 0; 
    } // /* destructor */ MainClass(...) 
}; // class MainClass 

void main() 
{ 
    MainClass* MainObject = new MainClass(); 
    MainObject->Color = 5; 
    MainObject->SubObject.X = 19; 
    MainObject->SubObject.Y = 32; 
    delete MainObject(); 
} // void main(...) 

포인터 객체 예 :

class SubClass 
{ 
    public: 
    int X; 
    int Y;  
}; // class SubClass 

class MainClass 
{ 
    public: 
    int Color; 
    SubClass* SubObject; 

    public: 
    /* constructor */ MainClass() 
    { 
     this.Color = 7; 
     this.SubObject = new SubClass(); 
    } // /* constructor */ MainClass(...) 

    /* destructor */ ~MainClass() 
    { 
     delete this.SubObject(); 
     this.Color = 0; 
    } // /* destructor */ MainClass(...) 
}; // class MainClass 

void main() 
{ 
    MainClass* MainObject = new MainClass(); 
    MainObject->Color = 5; 
    MainObject->SubObject->X = 19; 
    MainObject->SubObject->Y = 32; 
    delete MainObject(); 
} // void main(...) 

건배.

+0

자바를 사용하고 있습니다. 하지만 내 문제는 큰 지연과 자원 소비를 처리하는 것입니다. 왜냐하면 저는 서블릿으로 작업하기 때문입니다. 내가해야하는 몇 가지 쿼리 및 로딩이 최선입니다. 그래서 DB에서 대량의 정보를로드하고 세션 변수에 저장하는 것은 필자의 경우 매우 나쁜 일이다. 저는 RDBMS를 사용하고 있습니다 만 MVC 모델로 구성하고 OO와 협력하여 이점을 얻는 편이 더 좋습니다. – Alex

관련 문제