문제

내가 개발하는 C++클래스가 포함된 라이브러리에는 도메인 모델 클래스고,같은 지원을 추가하기 위해 인스턴스화 이러한 클래스에서는 다양한 지속성 메커니즘,즉데이터베이스와 파일입니다.사용자의 클래스 라이브러리를 부여해야는 인터페이스(?) 에 대하여는 프로그램 등을 전송할 수 있는 데이터에서 지속성 메커니즘이 있습니다.

내가 알고 있는 데이터 액세스 개체 패턴 작업하는 것처럼 보이지만 이는 Java 지만,나는 정확하게 확인하는 방법을 적용하는 C++.은 거기에 다른 솔루션인가?

도움이 되었습니까?

해결책

C++지원하는 여러 상속할 수 있도록 일반적인 지속성을 API 와 상속속성 메커니즘이 있습니다.이것은 여전히 사찰을 얻을 수있는 클래스 메타데이터,하지만 당신은 여전히으로 이동하실 수 있습니다 어떤 지속층이다.

또는 당신이 뭔가를 할 수 있는 비슷하지만 메타데이터를 사용하여 드라이브 코드를 생성기를 채우는에서'Getters'와'세터'지속층이다.

모든 지속성 계층은 일반적으로 사용하거나 다른 방법,그래서 당신의 문제는 연결 로딩 메커니즘으로 지속층이다.내 생각에 이것은 당신의 문제는 약간 다른 하나에서 고집하지만 태클에서 다른 방향입니다.보다는 건축 도메인 클래스에 영속성 프레임워크를 제공하는 설정의 도메인 수업 후크에 대한 지속성 framework 는 제삼자에게 수 있는 플러그인들의 데이터 액세스 메커니즘입니다.

나는 생각을 한 번에 대한 액세스를 제공하는 클래스 메타데이터와 콜백은 perisistence 메커니즘은 상대적으로 간단합니다.보 메타데이터 요소를 사용의 편리한 C++O/R framework 이해하고 그들이 어떻게 작동합니다.캡슐화는 이 API 에서 하나의 기본 클래스가 귀하의 도메인 클래스고를 제공하는 일반터 구 API 에 대한 인스턴스화하거나 유지.나머지는 사람을 구현하는 지속성층이다.

편집: 나는 생각할 수 없 C++라이브러리와 함께 유형의 플러그 가능한 지속성 메커니즘 당신을 설명하는,그러나 내가 뭔가에서는 파이썬 가질 수 있었던 이 유형의 시설이 추가됩니다.특정 구현을 사용된 시설에서는 파이썬 없이 직접적인 C++에 해당하지만,기본적인 원리는 아마 할 일에 적응 C++.

파이썬에서,당신은 당신을 가로챌 수 있는 액세스를 인스턴스의 변수를 재정의하여 __getattr()____setattr()__.지속화 메커니즘을 실제로 유지된 자신의 데이터 캐시 뒤에 있습니다.을 때 기능에 혼합 클래스(수행을 통해 여러 상속),그것을 무시한 기본 시스템 행동에 대한 구성원에 액세스하고 있는지 여부를 확인 특성을 쿼리되는 일치하는 아무것도에서 사전입니다.어디서 이런 일이,콜로 리디렉션을 가져오거나 설정할 수 있는 항목에서 데이터 캐시입니다.

캐시했다는 메타데이터의습니다.그것은 알고 있었다 사이의 관계의 엔터티 내에 있는 데이터 모델,그리고 특성에 이름을 차단하는 데이터에 액세스합니다.이 일로 구분된 데이터베이스에서 액세스 층 수 있(적어도 이론)가 허용하는 지속성 메커니즘을 사용되는 다른 드라이버가 있습니다.이 없는 고유의 이유는 당신이 할 수 없다(예)내장 드라이버전을 XML 파일입니다.

무언가를 만들기 같은 이 작품에서는 C++것이 조금 더잡하고 그것을 가능하지 않을 수 있습을 개체 캐시 액세스 투명한 것으로 그것이었던 이 시스템입니다.당신은 아마 최고의 명시적으로 프로토콜을 로드하는 플러시는 객체의 상태를 주시기 바랍니다.코드를 이것은 매우 의무가 생성에 사용하는 메타데이터 캐시이지만,이를 수행에서 컴파일때 정해진다.할 수 있습니다 무언가를 하는 템플릿과 함께 또는 재정의하여 -> 연산자들에게 접속 프로토콜 더 많은 투명하고,그러나 이것은 아마 많은 문제보다 가치가있다.

다른 팁

부스트 직렬화 제공하는 몇 가지 유용한 물건이 작업에 대한 serialize C++유형,그러나 어떻게 잘 맞는 인터페이스는 당신 욕망을 모르겠습니다.그것은 모두 지원 관입 및 비침입성 디자인,그래서 꽤 유연합니다.

내가 피할 것 serialization,이럴,우리는 구현에 대해 이의 응용 프로그램에서 MFC1995 년에,우리는 스마트 충분히 사용하는 독립적인 개체 버전 관리와 파일 버전 관리는,그러나 너와 끝까지 많은 오래된 지저분한 코드 주변 후에는 시간입니다.

상상 특정 시나리오를 비하하는 클래스,비 회원은,등등,각각의 새로운 문제입니다.이제 우리가 사용하는 compreseds"XML 형식"스트림을 추가할 수 있습니다 새로운 데이터와 호환성이 유지.

읽기와 쓰기의 파일로 추출됩니다 매핑에서 데이터를 객체로,우리는 지금 스위치,파일 포맷 추가 수입업체/수출업체없이 수정하는 우리의 핵심 비즈니스 개체입니다.

말해 일부 개발자들은 직렬화를 사랑,나의 자신의 만남 전환 코드 베이스 플랫폼,언어,툴킷을 모두 함께 가져올 많은 문제의 읽고 쓰는 데이터를하지 않아야 그들 중 하나입니다.

또한 표준을 사용하여 데이터 형식으로 일부는 독자적인 핵심,의미 해 쉽게 작업 제 3 자.

수도 있습 보기 좋아하는 부스트 직렬화.지하는 데 사용되는 그것을 말할 수 없다할지 여부를 추천하거나지 않습니다.일러는 일반적으로 높은 품질입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top