1

클래스 인스턴스 데이터를 읽고 쓰기위한 몇 가지 기능이나 프레임 워크 (예 : 인터페이스 클래스 등)를 제공해야하는 C++ 도메인 모델 클래스 라이브러리를 개발 중입니다. 2 진 파일 W RDBMS. 이 라이브러리의 기본은 RDBMS를 사용하는 응용 프로그램이며, 일련의 데이터베이스 검색 및 갱신 호출을 수행하여 클래스를 인스턴스화하는 여러 가지 방법으로 구성원 데이터 콜렉션을 가져옵니다. 직렬화 된 데이터 액세스는 데이터를 정리하는 다른 방법이있다, 그래서 나는이 문제를 해결하기 위해 도메인 모델이 주/외래 키, 아이디 등직렬화 된 관계형 데이터베이스 데이터 액세스에 데이터 액세스 개체를 사용하는 방법

완전히 무지가되고 싶어요, 나는 Data Access Object (DAO) 패턴을 사용하는 것을 고려 , 그리고 '세분성', 평생 및 DAO 개체의 사용에 대한 조언을하고 싶습니다. (답장에서 Java가 아닌 C++을 사용하고 도메인 클래스는 ID/키 정보를 가질 수 없다는 점에 유의하십시오. 는 RDBMS 또는 이진 파일 저장소)에서 :

  1. 도메인 개체의 각 푸 인스턴스가 자신의 FooDAO 인스턴스를 가지고 있는가, 또는 클래스 푸의 모든 인스턴스에 대해 하나의 FooDAO의 인스턴스가?
  2. 각 Foo 인스턴스에 대해 FooDAO가 한 번 생성되었거나 FooDAO 인스턴스가 데이터에 대한 액세스가 필요할 때만 만들어지고 그 후 즉시 삭제됩니까?
  3. DAO의 J2EE 페이지에는 DAO 외에도 DTO가 도입되었습니다. DAO가 데이터를 전송할 수없는 이유는 무엇입니까?
  4. 다른 도메인 클래스 Bar의 인스턴스가있는 복잡한 도메인 클래스 Foo의 경우 FooDAO 클래스가 BarDAO 클래스를 사용하여 데이터를 검색하는 것이 불가피한 것처럼 보입니다. 이는 도메인 클래스 구조와 DAO 클래스 구조의 병렬 계층/종속성을 유도합니다. 이것이 어떻게 가장 잘 관리 될 수 있습니까?

도움 주셔서 감사합니다.

답변

1

나는 당신에게 좋은 해결책이 없지만, 내가 가진 것과 생각과 경험을 말할 수 있습니다. 이전에 C++ 라이브러리로 사용했던 모델을 기반으로 비슷한 것을 만들었습니다. 특별한 순서없이

일부의 생각 :

  • 는 DB의 각 인스턴스에 대한 DAO 객체의 별도의 인스턴스 되세요. 공유 인스턴스가있는 경우 스레드 동기화가 문제가 될 수 있으며 많은 복사본을 작성해야합니다.
  • 내 라이브러리 DAO 클래스는 몇 가지 이유로 RDBMS 유형과 밀접하게 연관된 유형을 사용합니다. 첫째, 라이브러리는 기본 데이터 저장소에서 저장소의 자동 생성 및 업데이트를 지원하므로 클래스는 테이블을 만들 충분한 정보가 있어야합니다. 둘째, 데이터 변환을 훨씬 쉽게하고 최적화 할 수 있습니다 (예 : 네이티브 인터페이스를 사용하여 ODBC/OLEDB 데이터를 직접 복사 할 수 있음). 단점은 DAO 객체에 "멋진"클래스 유형을 사용할 수 없다는 것입니다 (예 : 실제 문자열 버퍼보다 ​​많은 데이터가 포함 된 문자열 추상화).
  • 메모리에 저장하는 것보다 저장소에 훨씬 더 많은 데이터가있을 수 있으므로 확실히 작성하십시오.
  • 최소한의 접근 자 기능으로 DAO 클래스를 간단하게 유지하려고하며 기본 데이터 구조를 "닫습니다". 즉, 다른 DAO 클래스의 상속, 키 변수 멤버가있는 인스턴스 등이 없습니다.

DAO 클래스의 맨 위에는 응용 프로그램의 데이터를 나타내는 더 많은 액세스 가능한 클래스가 구축되어 있으며, 1을 DAO 클래스에 추가합니다.이것들은 어떤 종류의 멤버와 구조체를 가질 수 있으며, 앱이 사용하는 것으로되어 있어야하고, 그것들의 기초가되는 DAO 클래스에서 /로 데이터를 복사하는 메소드를 가지고 있습니다.

희망이 있습니다.

0

나는 최선의 구현을 알고 있지만, 여기에 내가 다 본 적이 무엇을하지 않습니다 각 인스턴스에 대한

  1. 별도.
  2. 필요할 때 바로 생성되고 바로 삭제됩니다.
  3. 잘 모름
  4. DAO 인스턴스 외부에서 데이터를 결합함으로써 연결을 피할 수 있습니다.

면책 조항 : 이것은 내가 본 것입니다.