JP5108760B2 - 変更がデータストレージシステムのリレーショナルデータになされたかどうかを判定するコンピュータが実行する方法 - Google Patents

変更がデータストレージシステムのリレーショナルデータになされたかどうかを判定するコンピュータが実行する方法 Download PDF

Info

Publication number
JP5108760B2
JP5108760B2 JP2008523899A JP2008523899A JP5108760B2 JP 5108760 B2 JP5108760 B2 JP 5108760B2 JP 2008523899 A JP2008523899 A JP 2008523899A JP 2008523899 A JP2008523899 A JP 2008523899A JP 5108760 B2 JP5108760 B2 JP 5108760B2
Authority
JP
Japan
Prior art keywords
data
storage system
data object
relational
data storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008523899A
Other languages
English (en)
Other versions
JP2009507269A (ja
Inventor
チャンドラカント クルカルニー ディネシュ
ハイルズバーグ アンダース
ジェイ.ウォーレン マシュー
ボロネーゼ ルカ
ヨハネス マリア メイジャー ヘンリクス
エー.ハラム ピーター
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009507269A publication Critical patent/JP2009507269A/ja
Application granted granted Critical
Publication of JP5108760B2 publication Critical patent/JP5108760B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Developing Agents For Electrophotography (AREA)
  • Dry Development In Electrophotography (AREA)
  • Road Repair (AREA)

Description

【技術分野】
【0001】
本発明は、オブジェクト関係マッピングで使用されるコード生成パターンに関する。
【背景技術】
【0002】
メモリおよび処理能力の継続的向上に起因して、コード生成が、プログラマの生産性を高める一般的な方法になってきた。近年、コードジェネレータの人気が高まった。コードジェネレータは、ソースレベル言語コード(例えば、C、C#、Visual Basic、Java(登録商標)...)を自動的に生成する。自動生成されたコードを使用することによって、開発時間を減らし、コードの安定性を高めることができる。
【先行技術文献】
【特許文献】
【特許文献1】
国際公開第2004/107200号
【発明の開示】
【発明が解決しようとする課題】
【0003】
具体的に言うと、コード生成は、オブジェクト関係マッピング(ORM)のコンテキストで人気を得てきた。リレーショナルデータストレージシステム(例えば、DB2、SQL Server、MySQL、...)が、リレーショナルデータを格納し、リレーションシップを管理するのに利用される。ソースレベル言語で開発されたソフトウェアが、リレーショナルデータストレージシステムに格納されたリレーショナルデータにアクセスし、これを操作することが有用である。アプリケーションソフトウェアは、リレーショナルデータを管理しているときに、データに固有のリレーションシップを維持しなければならない。さらに、リレーショナルデータに対する変更または修正のすべてを、リレーショナルデータストレージシステムに戻って永続させなければならない。
【課題を解決するための手段】
【0004】
次は、請求される主題のいくつかの態様の基本的理解をもたらすために、単純化された要約を提示するものである。この要約は、広範囲の概要ではない。主要な/クリティカルな要素を識別すること、または請求される主題の範囲を区切ることは、意図されていない。この要約の唯一の目的は、後で提示されるより詳細な説明の前置きとして、単純化された形でいくつかの概念を提示することである。
【0005】
短く説明すると、提供される主題は、機械生成されるソースに関する。より具体的には、この主題は、データリレーションシップを管理しながらのオブジェクトモデルへのリレーショナルデータのマッピングに関連する機械生成されるソースコードに関する。データオブジェクト間の両方向リレーションシップを提供するコード生成パターンを説明する。
【0006】
生成されるオブジェクトモデルは、データストレージシステムからのリレーショナルデータのオンデマンドローディングまたは延期されたローディングをサポートすることができる。このオブジェクトモデルは、ジェネリック型を利用して、データストレージシステムデータテーブルに対応するデータテーブルのセットを作成することができる。これは、オブジェクトモデルにマッピングされたデータストレージシステムデータテーブルごとにデータテーブルを含むクラスとしてデータストレージシステムを表すことを可能にする。
【0007】
このオブジェクトモデルは、データストレージシステムからプルされたデータに対する変更を検出し、追跡することができるものとすることもできる。このシステムは、更新データを識別し、修正されたデータストレージシステムデータの上書きを防ぐ効率的な方法を提供する。
【0008】
さらに、デフォルトメンバモディファイヤが提供される。デフォルトモディファイヤは、ソースコードを直接に修正せずに、ツールによって生成されたソースコードをオーバーライドする能力を開発者に与える。
【0009】
前述の目的および関連する目的の達成に向かって、請求される主題のある種の例示的態様を、次の説明および添付図面に関して本明細書で説明する。これらの態様は、この主題を実践できる様々な形を示し、そのすべてが請求される主題の範囲に含まれることが意図されている。他の利益および新規の特徴は、図面と共に考慮されるときに、次の詳細な説明から明白になる可能性がある。
【発明を実施するための最良の形態】
【0010】
本発明の様々な態様を、これから、添付図面を参照して説明するが、添付図面では、類似する符号が、複数の図面を通じて類似するまたは対応する要素を指す。しかし、図面およびそれに関連する詳細な説明が、請求される主題を特定の開示される形態に限定することは、意図されていないことを理解されたい。そうではなく、その意図は、請求される主題の趣旨および範囲に含まれるすべての修正形態、同等物、および代替形態を含むことである。
【0011】
本明細書で使用される用語「コンポーネント」、「システム」、および類似物は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれであれ、コンピュータ関連エンティティを指すことが意図されている。例えば、コンポーネントは、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータとすることができるが、これらに限定はされない。例えば、コンピュータで動作しているアプリケーションとそのコンピュータとの両方を、コンポーネントとすることができる。1つまたは複数のコンポーネントが、1つのプロセスおよび/または実行のスレッドの中に存在することができ、1つのコンポーネントを、1つのコンピュータに局所化し、かつ/または複数のコンピュータの間で分散させることができる。
【0012】
単語「例示的」は、本明細書では、例、実例、または例示として働くことを意味するのに使用される。本明細書で「例示的」として説明されるすべての態様または設計は、必ずしも、他の態様または設計より好ましいまたは有利とは解釈されない。さらに、提供される例は、C#プログラミング言語を利用するが、多数の代替のプログラミング言語を使用することができる。
【0013】
さらに、開示される主題は、本明細書で詳細に説明される諸態様を実施するためにコンピュータまたはプロセッサベースのデバイスを制御するためにソフトウェア、ファームウェア、ハードウェア、またはその任意の組合せを作るのに標準プログラミングおよび/またはエンジニアリング技法を使用することによってシステム、方法、装置、または製造品として実施することができる。本明細書で使用される用語「製造品」(またはその代わりに「コンピュータプログラム製品」)は、任意のコンピュータ可読デバイス、搬送波、または媒体からアクセス可能なコンピュータプログラムを含むことが意図されている。例えば、コンピュータ可読媒体は、磁気ストレージデバイス(例えば、ハードディスク、フロッピー(登録商標)ディスク、磁気ストリップ...)、光ディスク(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)...)、スマートカード、およびフラッシュメモリデバイス(例えば、カード、スティック)を含むことができるが、これらに限定はされない。さらに、搬送波を使用して、電子メールの送信および受信またはインターネットもしくはローカルエリアネットワーク(LAN)などのネットワークへのアクセスに使用されるものなどのコンピュータ可読電子データを搬送できることを了解されたい。もちろん、請求される主題の範囲または趣旨から逸脱せずに、この構成に対して多数の変更を行うことができることを、当業者は認めるであろう。
【0014】
I.デフォルトメンバモディファイヤ
ここで図1を参照すると、一般に、プログラマは、コード生成ツールまたはソースコードジェネレータを使用して、プログラムの初期構造を作り、その後、生成されたソースコードを修正する。しかし、ソフトウェア開発中にコードをもう一度生成する必要がある場合には、生成されたコードに対する開発者の変更が、上書きされる。その結果、開発者は、別々のソースコードファイルを作成する場合がある。あるソースレベル言語は、別々のソースファイルを使用することによって、生成されたコードの修正を容易にする。例えば、C#は、クラスおよびインターフェースを複数の部分に分離し、別々のソースファイルに分離することを可能にする部分型を提供する。ツールによって生成された部分クラスを、開発者が記述した部分クラスとコンパイル中にマージすることができ、その結果、各部分クラスを独立に作成し、維持することができるようになる。図1に、コンパイルシステムを示す。コンパイル中に、開発者ソースコード102および生成されたソースコード104が、コンパイラコンポーネント106によって組み合わされる。結果の実装コード108(例えば、実行可能ファイル、中間言語...)は、開発者ソースコード102および生成されたソースコード104が単一のユニット内で記述された場合と同一である。
【0015】
部分クラスは、ツールによって生成されたソースコードで宣言された部分クラスにメンバを追加する能力をソフトウェア開発者に与えるが、開発者が生成されたソースコードで宣言されたメンバを修正することは可能にしない。部分クラスのメンバは、生成されたコードまたは開発者コードのいずれかで宣言できるが、両方で宣言することはできない。あるメンバが、ある部分クラスについて複数回宣言される場合に、コンパイラは、衝突を生成する。
【0016】
コードジェネレータは、デフォルトクラスメンバモディファイヤを提供することができる。デフォルトメンバモディファイヤは、そのメンバ宣言が、非デフォルトメンバ宣言がない場合に使用されることを示す。その結果、デフォルトメンバを非デフォルトクラスメンバによって上書きすることができる。これは、コンパイル中に衝突を生成せずに、部分クラスのツールによって生成されたメンバを修正する機構をソフトウェア開発者に与える。
【0017】
図2は、デフォルトメンバを処理する方法200を示す流れ図である。符号202で開始して、コンパイラは、ソースコードを受け取る。ソースコードは、コード生成ツール、ソフトウェア開発者、またはその両方によって作成することができる。204で、デフォルトメンバモディファイヤを検出する。コンパイラは、部分クラス内のデフォルトメンバを見つけたときに、206で、そのデフォルトメンバをオーバーライドする、そのクラスの同一の名前を有するメンバがあるかどうかを判定する。オーバーライドするメンバは、開発者が作成した別々のソースファイル内にある場合がある。非デフォルトメンバまたはオーバーライドするメンバがある場合には、208で、コンパイラは、オーバーライドするメンバのソースコードを利用し、デフォルトソースコードを無視する。212で、オーバーライドするソースコードを使用して、実装コードを生成する。しかし、オーバーライドするコードがまったくない場合には、210で、デフォルトソースコードを利用し、212で、実装コードにデフォルトソースコードを組み込む。このコンパイルプロセスは、214で終了する。
【0018】
生成されたソースコードファイルCustomer1.cs内の次のC#クラス宣言を検討されたい。
【0019】
【表1】
Figure 0005108760
【0020】
部分クラスCustomerが、宣言され、3つのデフォルトメンバすなわちName、Status、およびComputeDiscountを含む。Customerのメンバを修正することを望むソフトウェア開発者は、別々のソースファイル、例えばCustomer2.cs内で、次の部分クラスCustomerを宣言することができる。
【0021】
【表2】
Figure 0005108760
【0022】
ここで、この開発者は、Nameメンバを定義していない。したがって、生成されたコードで定義されたデフォルトのNameメンバが、コンパイラによって利用される。この開発者は、プロパティメンバStatusおよびメソッドメンバComputeDiscountを定義した。この2つのメンバは、生成されたソースコードで宣言された部分クラスCustomerのメンバと名前において同一であるが、異なるロジックまたは追加のロジックを含む。デフォルトメンバモディファイヤのゆえに、ソフトウェア開発者のソースコードで宣言されたメンバが、生成されたコードのプロパティおよびメソッドより優先される。デフォルトメンバモディファイヤは、開発者が、生成されたソースコードファイルを直接に修正せずに、生成されたコード内のクラスメンバをオーバーライドすることを可能にする。
【0023】
デフォルトメンバモディファイヤは、ブループリント(blueprint)と共に利用することもできる。本明細書で使用されるときに、ブループリントは、ソースコードに変換できる宣言型言語文書(例えば、拡張マークアップ言語(XML))である。ブループリントを使用して生成されるすべての部分クラスメンバは、デフォルトモディファイヤが明示的にオフに切り替えられていない限り、自動的にデフォルトモディファイヤを伴って指定することができる。次の例示的ブループリントを検討されたい。
【0024】
【表3】
Figure 0005108760
【0025】
デフォルトモディファイヤは、Customer NameプロパティのdefaultModifierなどの属性を指定することによって、望まれる場合に明示的にオフに切り替えることができる。代替案では、ブループリントを使用して生成される部分クラスメンバを、デフォルトモディファイヤが明示的にオンに切り替えられていない限り、デフォルトを使用しないように自動的に指定することができる。
【0026】
II.リレーションシップ管理用のコード生成パターン
ここで図3を参照すると、ツールによって生成されるコードは、頻繁にORMシステムで使用される。図3に示されているように、ORMシステム300には、アプリケーションコンポーネント304とデータストレージコンポーネント306との間のインターフェースとして働くORMコンポーネント302を含めることができる。リレーショナルデータは、アプリケーションコンポーネント304による使用のために、データストレージコンポーネント306から取り出し、ORMコンポーネント302によって管理することができる。
【0027】
従来のORMシステムは、リレーションシップ管理を適当に提供することができない。一般に、問題がある3つのリレーションシップタイプすなわち、1対1、1対多、および多対多がある。1対1リレーションシップでは、タイプAの各エンティティが、タイプBの正確に1つのエンティティとのリレーションシップを有し、タイプBのエンティティは、タイプAのエンティティとの対応するリレーションシップを有する。例えば、単純な在庫システムでは、各カスタマAが、一意のクレジットカード番号を有し、各クレジットカード番号は、正確に1人のカスタマを関連付けられる。1対多リレーションシップでは、タイプAの単一のエンティティが、タイプBの1つまたは複数のエンティティとのリレーションシップを有し、タイプBの各エンティティは、タイプAの単一のエンティティに関連する。例えば、在庫システムで、あるカスタマが、1つまたは複数の注文を行うことができ、各注文は、その注文を行った単一のカスタマに関連する。最後に、多対多リレーションシップでは、タイプAのエンティティが、タイプBの複数のエンティティとのリレーションシップを有することができ、タイプBの各エンティティが、タイプAの複数のエンティティとのリレーションシップを有することができる。例えば、注文を、複数の製品について行うことができ、単一の製品を、複数の注文に含めることができる。
【0028】
一般に、オブジェクト指向言語は、リレーショナルデータを管理し、リレーションシップの整合性を保証するツールをソフトウェア開発者に提供しない。例えば、カスタマ注文リレーションシップなどの1対多リレーションシップに関するデータが、オブジェクト指向ソースコードを使用してマッピングされるときに、そのデータは、しばしば、次のC#クラス宣言で示されるようにマッピングされる。
【0029】
【表4】
Figure 0005108760
【0030】
ここで、このソースコードは、宣言することによって、Customerメンバを有するOrderクラスおよびメンバOrdersを有するCustomerクラスを含み、ここで、Ordersは、Customerのインスタンスに関連する注文のリストである。上に示したCustomerクラスおよびOrderクラスのインスタンスにリレーショナルデータを投入することができるが、これらのクラスは、オブジェクト間のリレーションシップの整合性を要求することができない。開発者のコードが、対応する注文についてCustomerメンバを更新せずにCustomerインスタンスの注文を修正するのを防ぐ機構は、ない。オブジェクトにリレーショナルデータを投入するときに、オブジェクトがリレーショナルデータとの整合性を有することを保証するのは、プログラマの責任である。同様に、注文などのオブジェクトが除去されるときに、プログラマは、すべての関連するリレーションシップが更新されることを保証する責任を負う。あるOrderが削除される場合に、そのOrderは、関連するCustomerの注文のリストから除去されなければならない。
【0031】
ORMシステムは、下で説明するコード生成パターンを使用して、リレーションシップ整合性を強制しながら1対1、1対多、および多対多のリレーションシップをモデリングすることができる。このコード生成パターンには、リレーショナルデータを適当にモデリングするのに必要な両方向リレーションシップの強制を実現する、コンテナとも称するコンテナコンポーネントを含めることができる。データオブジェクトとも称する各データオブジェクトコンポーネント(例えば、Customer)に、リレーションシップ内の他のデータオブジェクト(例えば、Order)に対応する情報を含むコンテナを含めることができる。データオブジェクトおよびコンテナは、1対1、1対多、および多対多のリレーションシップをモデリングするために対にして使用することができる。各コンテナに、データオブジェクト間のリレーションシップが修正される場合に、コンテナが対応するデータオブジェクトに通知することを可能にする、1つまたは複数の通知を含めることができる。
【0032】
コンテナは、異なるタイプのオブジェクトについてインスタンス化できるジェネリッククラスとして実装することができる。コンテナには、データオブジェクトのセット(例えば、注文のセット)の集合体を含めることができる。データオブジェクトのセットを含むコンテナを、セットコンテナと称する。代替案では、コンテナに、データオブジェクトのセットではなく、データオブジェクトへの参照(例えば、注文に関するカスタマ名)を含めることができる。そのようなコンテナを、本明細書では参照コンテナ(reference container)と称する。参照コンテナの対を使用して、1対1リレーションシップをモデリングすることができる。セットコンテナの対を使用して、多対多リレーションシップをモデリングすることができる。参照コンテナおよびセットコンテナの組合せを使用して、1対多リレーションシップをモデリングすることができる。
【0033】
図4は、カスタマ注文リレーションシップを示すブロック図である。カスタマデータオブジェクト402は、注文データオブジェクト406に対応するオブジェクト情報を含むセットコンテナ404を有する。同様に、注文データオブジェクト406は、カスタマデータオブジェクト402に対応するオブジェクト情報を含む参照コンテナ408を有する。このセットコンテナには、セットコンテナ404に含まれるオブジェクト情報に対する変更が、通知を注文データオブジェクト406へ送らせるように、通知コンポーネント(図示せず)を含めることができる。同様に、この参照コンテナには、参照コンテナ408に含まれるオブジェクト情報に対する変更が、通知をカスタマデータオブジェクト402へ送らせるように、通知コンポーネント(図示せず)を含めることができる。次のC#コードを検討されたい。
【0034】
【表5】
Figure 0005108760
【0035】
ここでは、あるカスタマに関連する注文のリストが、EntitySetクラスを使用してセットコンテナとして実装され、ある注文に関連するカスタマが、EntityRefクラスを使用して参照コンテナとして実装されている。EntitySetクラスおよびEntityRefクラスは、下で詳細に説明する。
【0036】
EntitySetの次の例示的実装を検討されたい。
【0037】
【表6】
Figure 0005108760
【0038】
ここでは、ジェネリッククラスEntitySetが、型パラメータTEntityを有し、TEntityは、1つのリストメンバと2つのメソッドメンバすなわちonAddおよびonRemoveとを含むクラスに制約されている。EntitySetコンストラクタは、2つのパラメータすなわち通知デリゲートonAddおよびonRemoveを有する。AddメソッドおよびRemoveメソッドは、エンティティがEntitySetコレクションに追加されるかこれから除去されるときに、通知のデリゲートonAddおよびonRemoveが呼び出されることを保証する。EntitySetのAddメソッドは、追加されるエンティティがヌルでないことを保証する基本的なエラーチェックを実行し、エンティティをエンティティのリストに追加し、その後、onAddメソッドを使用して、追加についてエンティティに通知する。同様に、EntitySetからエンティティを除去するために、Removeメソッドは、除去されるエンティティがヌルでないことを保証する基本的なエラーチェックを実行し、エンティティをエンティティのリストから除去し、その後、onRemoveメソッドを使用して、除去についてエンティティに通知する。
【0039】
EntitySetを使用して、あるカスタマの注文のコレクション用のセットコンテナを実装することができる。EntityRefを使用して、各注文に関連するカスタマを格納するのに使用される参照コンテナを実装することができる。EntitySetおよびEntityRefを使用して実装されるコンテナは、1対多カスタマ注文リレーションシップを管理するために対にすることができる。EntityRefは、下でさらに詳細に述べる。今は、EntitySetのリレーションシップ管理を利用する、上で述べたカスタマ注文リレーションシップに関するCustomerクラスの次の例示的実装を検討されたい。
【0040】
【表7】
Figure 0005108760
【0041】
ここでは、EntitySetによって実装されるコンテナインフラストラクチャを使用して、CustomerデータオブジェクトのOrdersのコレクションにOrderを追加することができる。生成されるコードのうちでOrdersの追加および削除に関係する部分だけが、上に示されており、残りのコードは省略されている。
【0042】
クラスCustomerは、注文データオブジェクトのコレクションを有するEntitySetコンテナを含む。Customerクラスは、メソッドattach_Ordersおよびdetach_Ordersを含み、これらのメソッドは、関連するOrderエンティティのCustomerメンバを更新する。これらのメソッドのデリゲートが、パラメータとしてEntitySetコンストラクタに渡される。したがって、上で定義したEntitySetクラスのAddメソッドおよびRemoveメソッドは、これらのメソッドをonAddおよびonRemoveに使用する。
【0043】
図5は、データオブジェクトリレーションシップを維持しながらデータオブジェクトを1対多リレーションシップに関するコンテナに追加するプログラミング方法500の流れ図である。具体的に言うと、ここでは、上で述べたカスタマ注文の例のコンテキストでの注文の追加を述べる。符号502で、追加プロセスが開始される。呼び出しを行って、データオブジェクトのコレクションにデータオブジェクトを追加することができる。例えば、1つのOrderであるOrd1を、呼び出し「Cust1.Orders.Add(Ord1)」によって、カスタマのインスタンスであるCust1に追加することができる。504で、基本的なエラーチェックを実行して、追加されるデータオブジェクトがヌルであるかどうかを判定することができる。エラーがある場合には、506で例外を生成することができる。そうでない場合には、508で、データオブジェクトをデータオブジェクトのコレクションに追加することができる。データオブジェクトを追加した後に、510で追加の通知があり、512で、データオブジェクトを更新して、リレーションシップを反映させる。具体的に言うと、Ord1.CustomerにCust1をセットする。このプロセスは、514で終了する。
【0044】
図6は、データオブジェクトリレーションシップを維持しながらデータオブジェクトを1対多リレーションシップに関するコンテナから除去するプログラミング方法600の流れ図である。具体的に言うと、ここでは、上で述べたカスタマ注文の例のコンテキストでの注文の除去を述べる。符号602で、除去プロセスが開始される。呼び出しを行って、データオブジェクトのコレクションからデータオブジェクトを除去することができる。例えば、1つのOrderであるOrd2を、呼び出し「Cust1.Orders.Remove(Ord2)」によって、カスタマのインスタンスであるCust1から除去することができる。604で、基本的なエラーチェックを実行して、除去されるデータオブジェクトがヌルであるかどうかを判定することができる。エラーがある場合には、606で例外を生成することができる。そうでない場合には、608で、データオブジェクトをデータオブジェクトのコレクションから除去することができる。データオブジェクトを除去した後に、610で除去の通知があり、612で、データオブジェクトを更新して、リレーションシップを反映させる。具体的に言うと、Ord2.Customerにヌルをセットする。このプロセスは、614で終了する。
【0045】
参照コンテナには、データオブジェクトのコレクションではなくデータオブジェクトへの参照を含めることができる。参照コンテナは、より制限された形のセットコンテナと考えることができ、セットコンテナに存在するものと同一の通知を含む。参照コンテナは、1対1リレーションシップまたは1対多リレーションシップをマッピングするときに使用することができる。例えば、下でEntityRefとして実装される参照コンテナを、EntitySetを使用して実装されるセットコンテナと共に使用して、上で述べたカスタマ注文リレーションシップをモデリングすることができる。C#でのEntityRefの次の例示的実装を検討されたい。
【0046】
【表8】
Figure 0005108760
【0047】
ここでは、ジェネリッククラスEntityRefは、型パラメータTEntityを有し、TEntityは、1つのエンティティメンバと2つのメソッドメンバすなわちonAddおよびonRemoveとを含むクラスに制約されている。EntityRefコンストラクタは、2つのパラメータすなわち通知デリゲートonAddおよびonRemoveを有する。AddメソッドおよびRemoveメソッドは、エンティティがEntitySetコレクションに追加されるかこれから除去されるときに、通知のデリゲートonAddおよびonRemoveが呼び出されることを保証する。EntityRefは、エンティティを返すgetアクセッサおよびエンティティの値をセットするsetアクセッサを有するEntityプロパティを含む。しかし、setアクセッサは、onAddメソッドまたはonRemoveメソッドを使用して通知を実行する。
【0048】
図7は、データオブジェクトリレーションシップを維持しながらセットコンテナからデータオブジェクトを除去するプログラミング方法700の流れ図である。具体的に言うと、ここでは、上のカスタマ注文の例に関して注文の追加または除去を述べる。符号702で、呼び出しを行って、データオブジェクトを更新する。例えば、呼び出し「Order=Cust1」によって、OrderであるOrd1を更新して、カスタマCust1を追加することができる。704で、データオブジェクトの追加または除去のどちらを行うかを判定する。注文を除去する場合には、706でのデータオブジェクトのコレクションからデータオブジェクトを除去する通知、および708で値にヌルをセットする。その後、このプロセスは710で終了する。しかし、注文を追加する場合には、712で値をセットし、714でのデータオブジェクトのコレクションにデータオブジェクトを追加する通知。このプロセスは710で終了する。
【0049】
セットコンテナおよび参照コンテナを使用することによって、1対1、1対多、および多対多のリレーションシップをモデリングすることができる。しかし、通知のループを防ぐために、コンテナの対の一方のメンバが、制御を保持し、リレーションシップを管理するプロトコルを確立しなければならない。ループは、コンテナの対の第1コンテナからの通知が、第2コンテナから第1コンテナに戻る通知をトリガする場合に発生するはずである。
【0050】
参照コンテナのソースコードを最適化することができる。参照コンテナは、制限付きのセットコンテナと考えることができる。参照コンテナの機能性は、別々のクラス(例えば、EntityRef)を宣言せずに達成することができる。次のC#コードに示されているように、参照コンテナの機能性を、部分クラス(例えば、Order)の宣言の内側に移動して、オーバーヘッドを減らすことができる。
【0051】
【表9】
Figure 0005108760
【0052】
ここでは、クラスOrderのCustomerプロパティが、カスタマの注文のリストに注文を追加し、またはそのリストから注文を除去するsetアクセッサを含む。このsetアクセッサは、上で説明したEntityRefクラスのOnAddメソッドおよびOnRemoveメソッドと機能的に同等である。
【0053】
参照コンテナの最適化は、処理中のオーバーヘッドを減らすことができるが、簡潔さのより少ないソースコードをもたらす可能性がある。しかし、ソースコードの簡潔さまたは明瞭さは、ツールによって生成されるソースコードに関してクリティカルではない可能性がある。
【0054】
III.延期されたローディングまたは遅延ローディング
オブジェクト関係マッピングインフラストラクチャを、リレーショナルデータの延期されたローディングまたは遅延ローディングに関しても提供することができる。一般に、リレーショナルデータは、処理の始めにバッチでまたは必要を基礎としてのいずれかで、データストレージコンポーネントから取り出される。データ集中型プログラミングに関して、データのバッチ取り出しは、処理中にデータを格納するために大量のデータを必要とする場合がある。データが参照されるまでデータのローディングを延期することによって、必要なメモリの量が減る。しかし、データオブジェクトは、参照される前にメモリにロードされなければならない。
【0055】
図8は、ORMシステムでの延期されたローディングのオンデマンドでの実行の方法800を示す流れ図である。符号802で開始して、処理中に、呼び出しを行って、データオブジェクトにナビゲートする。804で、データオブジェクトへのナビゲーションをインターセプトする。806で、データオブジェクトが既に投入されており、リレーショナルデータを含むかどうか、またはデータオブジェクトがまだ投入されていないかどうかに関する判定を行う。データオブジェクトがリレーショナルデータを含む場合には、812で、データオブジェクトへのナビゲーションを継続する。そうでない場合には、808で、データオブジェクトに対応するリレーショナルデータをデータストレージコンポーネントから取り出す。取り出しには、データベースクエリまたはデータ取り出しの任意の他の方法を含めることができる。810で、取り出されたデータを使用して、データオブジェクトを投入する。812で、データオブジェクトへのナビゲーションを継続する。
【0056】
参照コンテナおよびセットコンテナにローディングコンポーネントを含めて、リレーショナルデータの延期されたローディングを実現することができる。これらのコンテナは、データオブジェクト間のナビゲーションをインターセプトし、データストレージコンポーネントに照会し、オンザフライでデータオブジェクトを作成し、投入することができ、これによって、すべてのデータオブジェクトを使用の前にメモリにロードすることを実際に必要とせずに、データオブジェクトが完全に投入されているという錯覚を作り上げることができる。
【0057】
次の例示的なC#コードは、EntitySetクラスに追加メンバを与えて、遅延ローディングすなわち延期されたローディングを実現する。
【0058】
【表10】
Figure 0005108760
【0059】
ここでは、getアクセッサが、TEntityオブジェクトへのナビゲーションをインターセプトし、EntitySetクラスのLoadメソッドメンバを呼び出す。Loadメソッドは、TEntityオブジェクトが既にメモリにロードされているかどうかを知るためにチェックし、そうでない場合には、エンティティのリストが、作成され、投入される。getアクセッサを使用してナビゲーションをインターセプトすることによって、EntitySetのターゲットが、参照される前にロードされることが保証される。同様に、setアクセッサは、TEntityオブジェクトへのナビゲーションをインターセプトする。setアクセッサも、ロードメソッドを呼び出して、TEntityオブジェクトの値をセットする前に、TEntityオブジェクトが作成され、投入されることを保証する。
【0060】
IV.強く型付けされたテーブル
通常、データオブジェクトは、データベースなどのデータストレージシステムまたはデータストレージコンポーネントのリレーショナルデータテーブル内に格納される。例えば、上で述べた在庫システムでは、データストレージコンポーネントに、カスタマのテーブルおよび注文のテーブルを含めることができる。新しいカスタマまたは注文がこの在庫システムに追加されるときに、行が、適当なテーブルに追加される。同様に、カスタマまたは、注文がこの在庫システムから削除されるときに、行が、適当なテーブルから削除される。
【0061】
オブジェクト指向プログラミングコンストラクトを使用してデータストレージシステムからのリレーショナルデータをモデリングするときに、オブジェクトモデルまたはコンストラクトは、データストレージシステムのリレーショナルデータテーブルに対応する強く型付けされたデータオブジェクトテーブルのセットを含まなければならない。プログラミング言語コンストラクトデータオブジェクトテーブルは、アプリケーションで使用されるデータストレージシステムのリレーショナルデータテーブルの表現とすることができる。在庫システムの例では、生成されるソースコードは、CustomerのテーブルおよびOrderのテーブルを含まなければならない。
【0062】
アプリケーションによるコンストラクトテーブルに対する変更のすべてを、追跡し、データストレージシステムテーブルに永続させなければならない。例えば、新しい対応するCustomer行をテーブルに挿入することによって、対応するデータストレージシステムテーブルを更新できるようにするために、Customerなどのクラスの新たに作成されるインスタンスのそれぞれを追跡しなければならない。同様に、行の削除に関して、Customerまたは他のクラスインスタンスの削除を追跡し、対応するデータストレージシステムテーブルに永続させなければならない。
【0063】
データオブジェクトテーブルは、ジェネリッククラス(例えば、Table)を使用して作成することができる。ジェネリッククラスは、データオブジェクトテーブルに格納された異なるタイプのオブジェクト(例えば、カスタマ、注文、供給業者、荷主...)を扱うために特殊化することができる。ジェネリッククラスを使用してデータオブジェクトテーブルを実装することによって、テーブルの共通の特徴が活用される。例えば、各テーブルは、データオブジェクトを追加し、除去するメソッドを必要とする可能性がある。Tableの次の例示的な宣言を検討されたい。
【0064】
【表11】
Figure 0005108760
【0065】
ジェネリッククラスTableでメンバAddおよびRemoveを定義することによって、個々のデータオブジェクトテーブルごとにAddメンバおよびRemoveメンバを作成する必要がなくなる。
【0066】
図9に、データストレージシステムテーブルに対応するデータオブジェクトテーブルのセットを作成する方法900を示す。符号902で開始して、データストレージシステム内のテーブルの個数および各テーブルのタイプを判定する。904で、データストレージシステムテーブルに対応するデータオブジェクトテーブルを、ジェネリッククラスを使用してインスタンス化する。906で、チェックを行って、モデリングすべき追加のデータストレージシステムテーブルがあるかどうかを判定する。そうである場合には、904で次のデータオブジェクトテーブルをインスタンス化する。すべてのデータストレージシステムテーブルをモデリングし終えている場合には、この方法は、908で終了する。
【0067】
例の在庫システムに関して、データコンテキスは、データストレージシステムテーブルをミラーリングするデータオブジェクトテーブルのセットを使用して作成することができる。次のC#コードを検討されたい。
【0068】
【表12】
Figure 0005108760
【0069】
ここでは、ジェネリッククラスTableが、Customers、Shippers、Suppliers、Orders、およびProductsのコレクションを作成するのに使用されている。本明細書で使用されるときに、Table<T>は、対応するデータストレージシステムテーブルの仮想表現である。生成されるコードは、個々のデータオブジェクトテーブルのAddメソッドおよびRemoveメソッドに関する強い型検査を提供する。データオブジェクトテーブルの生成は、ソフトウェア開発者がデータストレージシステムのテーブルごとに別々のテーブルを定義する必要をもなくし、開発者の作業時間およびデバッグ時間を減らす。
【0070】
新たに作成されるインスタンスおよび削除される取り出されるインスタンスだけが、強く型付けされるテーブルを使用して追跡される。新しいインスタンスおよび削除されるインスタンスが適当に追跡されることを保証するために、生成されるコードを呼び出す例示的な方法を示す。
【0071】
【表13】
Figure 0005108760
【0072】
V.リレーショナルデータ変更の検出および追跡
コード生成システムは、データストレージシステムからオブジェクトモデルにプルされたリレーショナルデータに対する変更の検出および追跡をも提供することができる。リレーショナルデータが、データストレージシステムからプルされて、アプリケーションによって使用されるデータオブジェクトに投入されるときに、そのデータオブジェクトが、ORMシステムに知られずに修正される場合がある。しかし、挿入、修正、または削除のすべてを、データストレージシステムに戻って永続させなければならない。さらに、第1アプリケーションの処理中に、他のアプリケーションが、データストレージシステムにアクセスし、第1アプリケーションによって使用されるデータオブジェクトを投入するのに使用されたリレーショナルデータを修正する場合がある。リレーショナルデータが、第1アプリケーションからデータストレージシステムに永続されるときに、これが、他のアプリケーションによって行われた変更を上書きしてはならない。
【0073】
1つの単純な解決策は、すべてのデータオブジェクトのコピーすなわち、データストレージシステムから取り出されたオリジナルデータを含むコピーを維持することである。これらのコピーを、データオブジェクトの現在の値と比較して、データオブジェクトが修正されたかどうかを判定することができる。これは、未変更のままであるデータオブジェクトに関して同一のコピーを格納するのにメモリが使用されることをもたらす。さらに、修正がデータストレージシステムに永続されるときに、各データオブジェクトは、そのデータオブジェクトに対する変更があったかどうかを判定するために、オリジナルの値を含むコピーと比較される。未変更のままであるデータオブジェクトを比較することによって、処理時間が浪費される。
【0074】
開示される主題の一態様では、コードジェネレータコンポーネントは、開発者によって可視であり修正可能であるソースレベルコードを生成して、変更の検出および追跡を実装することができる。変更の検出および追跡は、中間フォーマット(例えば、バイトコードまたはIL(中間言語))に隠蔽されるのではなく、ソースレベルコードで実装することができる。実装をソースレベルコードに配置することによって、その実装がソフトウェア開発者にトランスペアレントになる。
【0075】
生成されるコードは、アプリケーションによって修正されるデータオブジェクトだけについてコピーを作成することができる。これは、各データオブジェクトのコピーを作成する必要をなくし、コピーの個数を制限することによってスペースオーバーヘッドを最小にする。さらに、これは、データオブジェクトが変更されたかどうかを判定するために、未変更のデータオブジェクトをそのコピーと比較するのに必要な処理時間をなくす。
【0076】
ここで図10に移ると、コンテナソースコードに、データオブジェクトが修正されようとしているときにORMシステム内の変更検出コンポーネントに通知する変更通知コンポーネントを含めることができる。変更通知コンポーネントは、イベントハンドラを利用することができる。図10に、修正されたオブジェクトを追跡する方法1000を示す。符号1002で開始して、アプリケーションが、データオブジェクトを更新する呼び出しを行う。1004で、データオブジェクトを更新する呼び出しによって、通知がトリガされる。1006で、変更検出コンポーネントが、データオブジェクトが以前にコピーされたかどうかを検査する。データオブジェクトが前にコピーされていない場合には、変更検出コンポーネントは、1008で、そのデータオブジェクトをコピーし、データオブジェクトのコピーを、修正されたデータオブジェクトのリストに追加する。データオブジェクトが既にコピーされている場合には、オリジナルデータオブジェクトのコピーが、既にリストに追加されており、これを上書きしてはならない。1010で、アプリケーションによる指定に従って、データオブジェクトを更新する。次の例示的なC#コードを検討されたい。
【0077】
【表14】
Figure 0005108760
【0078】
通知インターフェースを使用して、変化するオブジェクトに関するイベントハンドラを指定することができる。
【0079】
【表15】
Figure 0005108760
【0080】
ここでは、上で詳細に説明したCustomerクラス内のプロパティに関するsetアクセッサが、データオブジェクトが変更されようとしていることをORMシステムの変更検出コンポーネントに知らせる通知を含む。ORMシステムは、データオブジェクトが修正される前にORMシステムがコピーを作成することを可能にするために、データオブジェクトが実際に変更される直前に通知される。
【0081】
ここで図11に移ると、ある点で、データオブジェクトに対する修正を、データストレージシステムに戻って永続させなければならない。図11に、変更をデータストレージシステムに永続させる方法1100を示す。1102で開始して、第1データオブジェクトコピーを、修正されたデータオブジェクトのリストから取り出す。データオブジェクトコピーは、データストレージシステムからプルされたオリジナルのリレーショナルデータを含む。1104で、データオブジェクトコピーを、データストレージシステム内のデータオブジェクトと比較する。1106で、チェックを行って、データオブジェクトコピーがデータストレージシステムオブジェクトと異なるかどうかを判定する。そうである場合には、データストレージシステム内のデータオブジェクトが、修正されており、1108で例外を生成することができる。データオブジェクトコピーおよびデータストレージシステムオブジェクトが同一である場合には、データストレージシステムオブジェクトは変更されておらず、1110で、修正されたデータオブジェクトを、データストレージシステムに永続させることができる。1112でチェックを行って、修正されたデータオブジェクトのリストに追加のデータオブジェクトがあるかどうかを判定する。そうである場合には、1102で、次のデータオブジェクトコピーを取り出す。そうでない場合には、この方法は、1114で終了する。
【0082】
前述のシステムは、複数のコンポーネントの間の相互作用に関して説明された。そのようなシステムおよびコンポーネントに、上で指定されたコンポーネントまたはサブコンポーネント、指定されたコンポーネントまたはサブコンポーネントのうちのいくつか、および/または追加のコンポーネントを含めることができることを了解されたい。サブコンポーネントを、親コンポーネント内に含まれるのではなく、他のコンポーネントに通信的に結合されたコンポーネントとして実施することもできる。さらに、1つまたは複数のコンポーネントを、集約機能性を提供する単一のコンポーネントに組み合わせ、あるいは複数のサブコンポーネントに分割することができることに留意されたい。これらのコンポーネントは、本明細書で具体的には説明されないが当業者に既知の1つまたは複数の他のコンポーネントと相互作用することもできる。
【0083】
さらに、了解されるとおり、上の開示されたシステムおよび下の方法の様々な部分は、人工知能ベース、知識ベース、またはルールベースのコンポーネント、サブコンポーネント、プロセス、手段、方法、または機構(例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、Bayesian belief network、ファジイ論理、data fusion engine、クラシファイヤ...)を含むかこれらからなるものとすることができる。そのようなコンポーネントは、なかんずく、それによって実行されるある種の機構またはプロセスを自動化して、このシステムおよび方法の諸部分をより適応式であると同時に効率的かつインテリジェントにすることができる。
【0084】
上で説明した例示的システムに鑑みて、開示される主題に従って実施できる方法は、図2、5〜11の流れ図を参照してよりよく理解される。説明を単純にするために、これらの方法は、一連のブロックとして図示され、説明されるが、一部のブロックが、異なる順序でおよび/または図示され本明細書で説明される他のブロックと同時に発生し得るので、請求される主題が、ブロックの順序によって限定されないことを理解し、了解されたい。さらに、図示されたブロックの一部が、下で説明する方法の実施に必要でない場合がある。
【0085】
さらに、下および本明細書全体を通じて開示される方法が、そのような方法をコンピュータにトランスポートし、転送するのを容易にするために製造品に格納されることができることをさらに了解されたい。本明細書で使用される用語製造品は、任意のコンピュータ可読デバイス、搬送波、または媒体からアクセス可能なコンピュータプログラムを含むことが意図されている。
【0086】
開示される主題の様々な態様のコンテキストを提供するために、図12および13ならびに次の議論は、開示される主題の様々な態様を実施できる適切な環境の短い全般的な説明を提供することを意図されたものである。この主題を、1つのコンピュータおよび/または複数のコンピュータで動作するコンピュータプログラムのコンピュータ実行可能命令の全般的な文脈を上で説明したが、当業者は、本発明を他のプログラムモジュールと組み合わせて実施することもできることを認めるであろう。一般に、プログラムモジュールは、特定のタスクを実行し、かつ/または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者は、本発明の方法を、シングルプロセッサコンピュータシステムまたはマルチプロセッサコンピュータシステム、ミニコンピューティングデバイス、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス(例えば、携帯情報端末(PDA)、電話機、腕時計...)、マイクロプロセッサベースのまたはプログラマブルなコンシューマエレクトロニクスまたは産業用エレクトロニクス、および類似物を含む、他のコンピュータシステム構成を用いて実践できることを諒解するであろう。示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境でも実践することができる。しかし、本発明の態様の、すべてではないにせよ一部を、独立型コンピュータで実践することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートとの両方のメモリストレージデバイスに置くことができる。
【0087】
図12を参照すると、本明細書で開示される様々な態様を実施する例示的環境1210に、コンピュータ1212(例えば、デスクトップ機、ラップトップ機、サーバ、ハンドヘルド機、プログラマブルなコンシューマエレクトロニクスまたは産業用エレクトロニクス...)が含まれる。コンピュータ1212は、処理ユニット1214、システムメモリ1216、およびシステムバス1218を含む。システムバス1218は、システムメモリ1216を含むがこれに限定されないシステムコンポーネントを処理ユニット1214に結合する。処理ユニット1214は、様々な使用可能なマイクロプロセッサのいずれかとすることができる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、処理ユニット1214として使用することができる。
【0088】
システムバス1218は、メモリバスもしくはメモリコントローラ、周辺バスもしくは外部バス、ならびに/または11ビットバス、Industrial Standard Architecture(ISA)、マイクロチャネルアーキテクチャ(MCA)、Extended ISA(EISA)、Intelligent Drive Electronics(IDE)、VESA Local Bus(VLB)、Peripheral Component Interconnect(PCI)、Universal Serial Bus(USB)、Advanced Graphics Port(AGP)、Personal Computer Memory Card International Associationバス(PCMCIA)、およびSmall Computer Systems Interface(SCSI)を含むがこれに限定されない様々な使用可能なバスアーキテクチャのいずれかを使用するローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。
【0089】
システムメモリ1216は、揮発性メモリ1220および不揮発性メモリ1222を含む。スタートアップ中などにコンピュータ1212内の要素の間で情報を転送する基本ルーチンを含む基本入出力システム(BIOS)が、不揮発性メモリ1222に格納される。限定ではなく例として、不揮発性メモリ1222は、読取専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラム可能ROM(EPROM)、電気的消去可能ROM(EEPROM)、またはフラッシュメモリを含むことができる。揮発性メモリ1220は、外部キャッシュメモリとして働くランダムアクセスメモリ(RAM)を含む。限定ではなく例として、RAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、およびdirect Rambus RAM(DRRAM)などの多数の形で入手可能である。
【0090】
コンピュータ1212は、リムーバブル/ノンリムーバブルの揮発性/不揮発性コンピュータ記憶媒体をも含む。図12に、例えば、ディスクストレージ1224を示す。ディスクストレージ1224は、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカード、またはメモリスティックなどのデバイスを含むが、これらに限定はされない。さらに、ディスクストレージ1224に、コンパクトディスクROMデバイス(CD−ROM)、CD recordableドライブ(CD−Rドライブ)、CD rewritableドライブ(CD−RWドライブ)、またはデジタル多用途ディスクROMドライブ(DVD−ROM)などの光学ディスクドライブを含むがこれに限定されない記憶媒体を、他の記憶媒体と別々にまたはこれらと組み合わせて含めることができる。システムバス1218へのディスクストレージデバイス1224の接続を容易にするために、インターフェース1226などのリムーバブルまたはノンリムーバブルのインターフェースが、通常は使用される。
【0091】
図12に、ユーザと、適切なオペレーティング環境1210で説明した基本的なコンピュータリソースとの間の媒介として働くソフトウェアが記載されていることを諒解されたい。そのようなソフトウェアに、オペレーティングシステム1228が含まれる。オペレーティングシステム1228は、ディスクストレージ1224に格納することができるが、コンピュータシステム1212のリソースを制御し、割り当てるように働く。システムアプリケーション1230は、システムメモリ1216内またはディスクストレージ1224上のいずれかに格納されたプログラムモジュール1232およびプログラムデータ1234を介するオペレーティングシステム1228によるリソースの管理を利用する。本発明を、様々なオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実施できることを諒解されたい。
【0092】
ユーザは、入力デバイス1236を介してコンピュータ1212にコマンドまたは情報を入力する。入力デバイス1236は、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、TVチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ、および類似物を含むが、これらに限定はされない。これらおよび他の入力デバイスは、インターフェースポート1238を介し、システムバス1218を介して処理ユニット1214に接続される。インターフェースポート1238は、例えば、シリアルポート、パラレルポート、ゲームポート、およびuniversal serial bus(USB)を含む。出力デバイス1240は、入力デバイス1236と同一タイプのポートのいくつかを使用する。したがって、例えば、USBポートを使用して、コンピュータ1212に入力を提供し、コンピュータ1212から出力デバイス1240に情報を出力することができる。出力アダプタ1242が、ディスプレイ(例えば、フラットパネルおよびCRT)、スピーカ、およびプリンタなど、出力デバイス1240の中でも特殊なアダプタを必要とするいくつかの出力デバイス1240があることを示すために提供される。出力アダプタ1242には、限定ではなく例として、出力デバイス1240とシステムバス1218との間の接続の手段を提供する、ビデオカードおよびサウンドカードが含まれる。リモートコンピュータ1244など、他のデバイスおよび/またはデバイスのシステムが、入力機能と出力機能との両方を提供することに留意されたい。
【0093】
コンピュータ1212は、リモートコンピュータ1244などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ1244は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースの機器、ピアデバイス、または他の一般的なネットワークノードおよび類似物とすることができ、通常は、コンピュータ1212に関して説明した要素の多数またはすべてを含む。図を簡単にするために、メモリストレージデバイス1246だけが、リモートコンピュータ1244と共に図示されている。リモートコンピュータ1244は、論理的にネットワークインターフェース1248を介してコンピュータ1212に接続され、次に、物理的に通信接続1250を介して接続される。ネットワークインターフェース1248は、ローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)などの通信ネットワークを含む。LANテクノロジは、Fiber Distributed Data Interface(FDDI)、Copper Distributed Data Interface(CDDI)、イーサネット(登録商標)/IEEE802.3、トークンリング/IEEE 802.5、および類似物を含む。WANテクノロジは、ポイントツーポイントリンク、サービス総合デジタル網(ISDN)およびその変形形態などの回路交換網、パケット交換網、およびデジタル加入者回線(DSL)を含むが、これに限定はされない。
【0094】
通信接続1250は、ネットワークインターフェース1248をバス1218に接続するのに使用されるハードウェア/ソフトウェアを指す。通信接続1250は、図を明瞭にするためにコンピュータ1212の内部に図示されているが、コンピュータ1212の外部とすることもできる。ネットワークインターフェース1248への接続に必要なハードウェア/ソフトウェアは、例示のみとして、通常の電話等級モデム、ケーブルモデム、電力線モデム、およびDSLモデムを含むモデム、ISDNアダプタ、ならびにイーサネット(登録商標)カードまたはイーサネット(登録商標)コンポーネントなどの、内蔵テクノロジおよび外付けテクノロジを含む。
【0095】
図13は、本発明が相互作用できるサンプルのコンピューティング環境1300の概略ブロック図である。システム1300は、1つまたは複数のクライアント1310を含む。クライアント1310は、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティングデバイス)とすることができる。システム1300は、1つまたは複数のサーバ1330をも含む。したがって、システム1300は、他のモデルの中でも、2ティアクライアントサーバモデルまたはマルチティアモデル(例えば、クライアント、ミドルティアサーバ、データサーバ)に対応することができる。サーバ1330も、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティングデバイス)とすることができる。クライアント1310とサーバ1330との間の可能な通信の1つを、複数のコンピュータプロセスの間で伝送されるように適合されたデータパケットの形とすることができる。システム1300は、クライアント1310とサーバ1330との間の通信を容易にするのに使用することができる通信フレームワーク1350を含む。クライアント1310は、クライアント1310にローカルな情報を格納するのに使用できる1つまたは複数のクライアントデータストア1360に動作可能に接続される。同様に、サーバ1330は、サーバ1330にローカルな情報を格納するのに使用することができる1つまたは複数のサーバデータストア1340に動作可能に接続される。
【0096】
上で説明したものは、請求される主題の諸態様の例を含む。もちろん、請求される主題の説明においてコンポーネントまたは方法のすべての考えられる組合せを説明することは不可能であるが、当業者は、開示された主題の多数のさらなる組合せおよび置換が可能であることを認めるであろう。したがって、開示された主題は、添付の特許請求の範囲の趣旨および範囲に含まれるすべてのそのような代替形態、修正形態、および変形形態を含むことが意図されている。さらに、用語「includes」、「has」、または「having」が詳細な説明または特許請求の範囲のいずれかで使用される範囲で、これらの用語は、用語「comprising」が特許請求の範囲で前後を接続する単語として使用されるときに「comprising」が解釈される形に類似する形で包含的であることを意図されている。
【図面の簡単な説明】
【0097】
【図1】ツールによって生成されるソースコードのコンパイルシステムを示すブロック図である。
【図2】デフォルトクラスメンバを処理する方法を示す流れ図である。
【図3】ORMシステムを示すブロック図である。
【図4】カスタマ注文リレーションシップを示すブロック図である。
【図5】データオブジェクトリレーションシップを維持しながらデータオブジェクトをコンテナに追加する方法を示す流れ図である。
【図6】データオブジェクトリレーションシップを維持しながらデータオブジェクトをコンテナから除去する方法を示す流れ図である。
【図7】データオブジェクトリレーションシップを維持しながらデータオブジェクト参照を追加しまたは除去する方法を示す流れ図である。
【図8】ORMシステムに関する延期されたローディングを実行する方法を示す流れ図である。
【図9】データストレージシステムテーブルに対応するデータオブジェクトテーブルのセットを作成する方法を示す流れ図である。
【図10】修正されたオブジェクトを追跡する方法を示す流れ図である。
【図11】リレーショナルデータに対する修正をデータストレージシステムに永続させる方法を示す流れ図である。
【図12】適切なオペレーティング環境を示す概略ブロック図である。
【図13】サンプルのコンピューティング環境を示す概略ブロック図である。

Claims (3)

  1. リレーショナルデータがオブジェクトモデルにコピーされるで、かつ、前記オブジェクトモデル内の前記リレーショナルデータが、データストレージシステムにコピーバックされる前に、変更が前記データストレージシステムのリレーショナルデータになされたかどうかを判定するコンピュータが実行する方法であって、
    第1アプリケーションプログラムによるアクセスのために、前記データストレージシステムから第1データオブジェクトにリレーショナルデータをコピーするステップと、
    前記第1アプリケーションプログラムが前記第1データオブジェクト内の前記リレーショナルデータの更新を試みると、前記第1データオブジェクトのコピーを作成するステップと、
    修正されたデータオブジェクトのリスト内に前記第1データオブジェクトの前記コピーを記録するステップと、
    前記第1データオブジェクトの前記リレーショナルデータを更新するステップと、
    前記第1データオブジェクトの更新されたリレーショナルデータを前記データストレージシステムにコピーバックすることを試みると、前記第1データオブジェクトの前記コピーと前記データストレージシステム内に記録された前記リレーショナルデータと比較し、前記第1データオブジェクトの前記リレーショナルデータの前記コピーが前記データストレージシステム内で記録された前記リレーショナルデータと一致していると判定すると、前記データストレージシステム内の前記リレーショナルデータが、別のアプリケーションプログラム、または、コンポーネントにより修正されていないことを示し、前記第1データオブジェクトの前記更新されたリレーショナルデータが前記データストレージシステムにコピーされ、一方で、前記第1データオブジェクトの前記リレーショナルデータの前記コピーが前記データストレージシステムに記録された前記リレーショナルデータに一致していないと判定されると、前記第1データオブジェクトの更新されたリレーショナルデータが前記データストレージシステムにコピーされないステップと
    を含むことを特徴とする方法。
  2. 前記第1データオブジェクトが第2データオブジェクトのリレーショナルデータを参照するリレーショナルデータを含み、前記方法は、
    前記第1データオブジェクトの前記リレーショナルデータを更新すると、前記更新前記第2データオブジェクトに通知するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  3. 請求項に記載の方法をプロセッサにより実行するコンピュータ実行可能命令をその上に格納されることを特徴とするコンピュータ可読記録媒体。
JP2008523899A 2005-07-29 2006-06-29 変更がデータストレージシステムのリレーショナルデータになされたかどうかを判定するコンピュータが実行する方法 Expired - Fee Related JP5108760B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/193,690 US7631011B2 (en) 2005-07-29 2005-07-29 Code generation patterns
US11/193,690 2005-07-29
PCT/US2006/025390 WO2007018819A2 (en) 2005-07-29 2006-06-29 Code generation patterns

Publications (2)

Publication Number Publication Date
JP2009507269A JP2009507269A (ja) 2009-02-19
JP5108760B2 true JP5108760B2 (ja) 2012-12-26

Family

ID=37695618

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008523899A Expired - Fee Related JP5108760B2 (ja) 2005-07-29 2006-06-29 変更がデータストレージシステムのリレーショナルデータになされたかどうかを判定するコンピュータが実行する方法

Country Status (5)

Country Link
US (1) US7631011B2 (ja)
EP (1) EP1913490B1 (ja)
JP (1) JP5108760B2 (ja)
CN (2) CN101894027B (ja)
WO (1) WO2007018819A2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070044083A1 (en) * 2005-07-29 2007-02-22 Microsoft Corporation Lambda expressions
US7631011B2 (en) 2005-07-29 2009-12-08 Microsoft Corporation Code generation patterns
US7992140B2 (en) 2005-07-29 2011-08-02 Microsoft Corporation Compiler supporting programs as data objects
US7685567B2 (en) * 2005-07-29 2010-03-23 Microsoft Corporation Architecture that extends types using extension methods
US7702640B1 (en) 2005-12-29 2010-04-20 Amazon Technologies, Inc. Stratified unbalanced trees for indexing of data items within a computer system
US8589574B1 (en) 2005-12-29 2013-11-19 Amazon Technologies, Inc. Dynamic application instance discovery and state management within a distributed system
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US8615730B2 (en) * 2006-07-14 2013-12-24 Microsoft Corporation Modeled types-attributes, aliases and context-awareness
US7788275B2 (en) * 2007-09-18 2010-08-31 Microsoft Corporation Customization of relationship traversal
US8190827B2 (en) * 2009-02-27 2012-05-29 Red Hat, Inc. Memory sharing among computer programs
US8260824B2 (en) * 2009-05-05 2012-09-04 Rocket Software, Inc. Object-relational based data access for nested relational and hierarchical databases
CN102053855B (zh) * 2010-12-13 2014-03-05 浪潮(北京)电子信息产业有限公司 一种软件的生成系统及方法
US8572101B2 (en) 2011-01-10 2013-10-29 International Business Machines Corporation Faceted interaction interface to object relational data
US8538920B2 (en) * 2011-08-08 2013-09-17 Hewlett-Packard Development Company, L.P. System and method for storage service
CN104657140B (zh) * 2015-02-10 2018-01-09 广州华多网络科技有限公司 代码生成方法及装置
US10104090B2 (en) * 2015-08-25 2018-10-16 Oracle International Corporation Restrictive access control for modular reflection
US10191753B2 (en) 2016-03-30 2019-01-29 Oracle International Corporation Generating verification metadata and verifying a runtime type based on verification metadata
US10394528B2 (en) 2016-03-30 2019-08-27 Oracle International Corporation Returning a runtime type loaded from an archive in a module system
US10387142B2 (en) 2016-09-16 2019-08-20 Oracle International Corporation Using annotation processors defined by modules with annotation processors defined by non-module code
US10360008B2 (en) 2016-09-16 2019-07-23 Oracle International Corporation Metadata application constraints within a module system based on modular encapsulation
US10848410B2 (en) 2017-03-29 2020-11-24 Oracle International Corporation Ranking service implementations for a service interface
US10691426B2 (en) * 2017-10-26 2020-06-23 Saudi Arabian Oil Company Building flexible relationships between reusable software components and data objects
CN107977470A (zh) * 2017-12-22 2018-05-01 陈瑞 一种介入对象内部行为的方法及相关装置
US11301244B1 (en) 2020-11-16 2022-04-12 International Business Machines Corporation Machine learning based tracking of derivaitive code

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761493A (en) * 1990-04-30 1998-06-02 Texas Instruments Incorporated Apparatus and method for adding an associative query capability to a programming language
EP0667012B1 (en) * 1992-11-09 1997-02-05 Microsoft Corporation Method and system for connecting objects in a computer system
US5315703A (en) * 1992-12-23 1994-05-24 Taligent, Inc. Object-oriented notification framework system
US5504885A (en) * 1993-06-29 1996-04-02 Texas Instruments Incorporated O-R gateway: a system for connecting object-oriented application programs and relational databases
US5500881A (en) * 1993-07-12 1996-03-19 Digital Equipment Corporation Language scoping for modular, flexible, concise, configuration descriptions
WO1995004960A2 (en) * 1993-08-02 1995-02-16 Persistence Software, Inc. Method and apparatus for managing relational data in an object cache
US5755242A (en) * 1994-12-23 1998-05-26 Denebeim; Sabrina R. Spherical hair styling device
US5748966A (en) * 1994-12-30 1998-05-05 The Trustees Of The University Of Pennsylvania Type error checker for type-free or polymorphic computer language
US5664180A (en) * 1995-03-20 1997-09-02 Framework Technologies Corporation Design tool for complex objects which links object structures of a design object in multiple design domains
US5907846A (en) * 1996-06-07 1999-05-25 Electronic Data Systems Corporation Method and system for accessing relational databases using objects
US5897622A (en) * 1996-10-16 1999-04-27 Microsoft Corporation Electronic shopping and merchandising system
US5937402A (en) * 1997-06-19 1999-08-10 Ontos, Inc. System for enabling access to a relational database from an object oriented program
US5937409A (en) * 1997-07-25 1999-08-10 Oracle Corporation Integrating relational databases in an object oriented environment
EP1068577A1 (en) * 1997-09-26 2001-01-17 Ontos, Inc. Object model mapping and runtime engine for employing relational database with object oriented software
US6339775B1 (en) * 1997-11-07 2002-01-15 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6243709B1 (en) * 1998-06-29 2001-06-05 Sun Microsystems, Inc. Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
US6175837B1 (en) * 1998-06-29 2001-01-16 Sun Microsystems, Inc. Object-relational mapping toll that processes views
US6385618B1 (en) * 1997-12-22 2002-05-07 Sun Microsystems, Inc. Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
AU1939399A (en) * 1997-12-22 1999-07-12 Tony Chun Tung Ng Evolution of object-relational mapping through source code merging
US6016497A (en) * 1997-12-24 2000-01-18 Microsoft Corporation Methods and system for storing and accessing embedded information in object-relational databases
ATE239937T1 (de) * 1998-10-13 2003-05-15 Codagen Technologies Corp Komponentbasiertes quellcodegeneratorverfahren
GB2351367A (en) * 1999-06-22 2000-12-27 Int Computers Ltd Generating code for processing a database
US6470354B1 (en) * 1999-08-05 2002-10-22 International Business Machines Corporation Implementing persistent object services (POS) on top of a relational database
US6615323B1 (en) * 1999-09-02 2003-09-02 Thomas Albert Petersen Optimizing pipelined snoop processing
US7185016B1 (en) * 2000-09-01 2007-02-27 Cognos Incorporated Methods and transformations for transforming metadata model
US6681383B1 (en) * 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
US8095508B2 (en) * 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US6567819B1 (en) * 2000-04-07 2003-05-20 Ebest!, Inc. Run time objects
US6690981B1 (en) * 2000-05-04 2004-02-10 National Instruments Corporation System and method for encapsulating user interface code for a graphical program
CN1196995C (zh) * 2000-10-27 2005-04-13 株式会社东芝 应用软件开发系统及其方法、以及应用软件生成方法
US6993529B1 (en) * 2001-06-01 2006-01-31 Revenue Science, Inc. Importing data using metadata
US6857118B2 (en) * 2001-07-25 2005-02-15 The Mathworks, Inc. Function values in computer programming languages having dynamic types and overloading
GB0119488D0 (en) * 2001-08-10 2001-10-03 Cellectivity Ltd E-commerce method for mobile telephones
US7103590B1 (en) * 2001-08-24 2006-09-05 Oracle International Corporation Method and system for pipelined database table functions
US6826568B2 (en) * 2001-12-20 2004-11-30 Microsoft Corporation Methods and system for model matching
US7096231B2 (en) * 2001-12-28 2006-08-22 American Management Systems, Inc. Export engine which builds relational database directly from object model
JP4490026B2 (ja) * 2002-01-28 2010-06-23 日立オムロンターミナルソリューションズ株式会社 カスタマイズ可能な情報処理装置
JP3870112B2 (ja) * 2002-03-13 2007-01-17 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル方法、コンパイル装置、及びコンパイル用プログラム
EP1495467A4 (en) * 2002-04-16 2009-08-26 Samsung Electronics Co Ltd INFORMATION STORAGE MEDIUM FOR RECORDING INFORMATION RELATING TO VERSION OF INTERACTIVE CONTENT, AND RECORDING AND REPRODUCING METHOD
US7043720B2 (en) * 2002-04-22 2006-05-09 Sun Microsystems, Inc. Mechanism for reformatting a simple source code statement into a compound source code statement
US7149730B2 (en) * 2002-05-03 2006-12-12 Ward Mullins Dynamic class inheritance and distributed caching with object relational mapping and cartesian model support in a database manipulation and mapping system
AU2003252065A1 (en) * 2002-07-22 2004-02-09 Thought, Inc. Dynamic object- driven database manipulation and mapping system
KR100558765B1 (ko) * 2002-11-14 2006-03-10 한국과학기술원 적응형 경로 인덱스를 이용한 xml 질의 수행 방법
US7284242B2 (en) * 2003-01-06 2007-10-16 Xerox Corporation Program compiler with abstraction composer
US20040158549A1 (en) * 2003-02-07 2004-08-12 Vladimir Matena Method and apparatus for online transaction processing
US20040194057A1 (en) * 2003-03-25 2004-09-30 Wolfram Schulte System and method for constructing and validating object oriented XML expressions
US7103613B2 (en) * 2003-05-14 2006-09-05 International Business Machines Corporation Object oriented query root leaf inheritance to relational join translator method, system, article of manufacture, and computer program product
CN100373375C (zh) * 2003-05-17 2008-03-05 微软公司 用数据控制用户界面属性的系统和方法
US20040243921A1 (en) * 2003-05-30 2004-12-02 Carr Steven Paul Methods and systems for synchronizing document elements
US7136868B2 (en) * 2003-06-06 2006-11-14 Microsoft Corporation Database object script generation method and system
JP2005004369A (ja) * 2003-06-10 2005-01-06 Scio:Kk データ処理端末、クラス、オブジェクト、プログラム及びサーバ
JP2005004618A (ja) * 2003-06-13 2005-01-06 Fujitsu Ltd ディレクトリデータベース間参照連携情報整合性保持プログラム、装置、記録媒体および方法
US7383255B2 (en) * 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7013311B2 (en) * 2003-09-05 2006-03-14 International Business Machines Corporation Providing XML cursor support on an XML repository built on top of a relational database system
US7185024B2 (en) * 2003-12-22 2007-02-27 International Business Machines Corporation Method, computer program product, and system of optimized data translation from relational data storage to hierarchical structure
US7289997B1 (en) * 2004-04-23 2007-10-30 Sun Microsystems, Inc. System and method for an extensible metadata driven application framework
US7310638B1 (en) * 2004-10-06 2007-12-18 Metra Tech Method and apparatus for efficiently processing queries in a streaming transaction processing system
US7523131B2 (en) * 2005-02-10 2009-04-21 Oracle International Corporation Techniques for efficiently storing and querying in a relational database, XML documents conforming to schemas that contain cyclic constructs
US7853961B2 (en) * 2005-02-28 2010-12-14 Microsoft Corporation Platform for data services across disparate application frameworks
US8612468B2 (en) * 2005-03-02 2013-12-17 Red Hat, Inc. System and method for retrieving data from a relational database management system
US7631011B2 (en) 2005-07-29 2009-12-08 Microsoft Corporation Code generation patterns

Also Published As

Publication number Publication date
EP1913490A2 (en) 2008-04-23
JP2009507269A (ja) 2009-02-19
WO2007018819A3 (en) 2009-05-14
US20070027907A1 (en) 2007-02-01
CN101523384B (zh) 2011-05-25
EP1913490A4 (en) 2009-10-21
US7631011B2 (en) 2009-12-08
EP1913490B1 (en) 2017-07-26
CN101894027B (zh) 2012-08-29
CN101894027A (zh) 2010-11-24
CN101523384A (zh) 2009-09-02
WO2007018819A2 (en) 2007-02-15

Similar Documents

Publication Publication Date Title
JP5108760B2 (ja) 変更がデータストレージシステムのリレーショナルデータになされたかどうかを判定するコンピュータが実行する方法
JP2022166013A (ja) クライアント同期における違反の解決のための方法、コンピュータ可読媒体、及びシステム
US10740093B2 (en) Advanced packaging techniques for improving work flows
CA2814835C (en) Managing data set objects in a dataflow graph that represents a computer program
CN105359141B (zh) 支持基于流的etl和基于实体关系的etl的组合
US8712965B2 (en) Dynamic report mapping apparatus to physical data source when creating report definitions for information technology service management reporting for peruse of report definition transparency and reuse
AU2006200230B2 (en) Platform for data services across disparate application frameworks
US7392263B2 (en) File system represented inside a database
US8694557B2 (en) Extensibility of metaobjects
BRPI0609335A2 (pt) aplicações modulares para sistema móvel de dados
JP2008511928A (ja) メタデータの管理
US10747643B2 (en) System for debugging a client synchronization service
Wiil et al. Hyperform: A hypermedia system development environment
US20150081744A1 (en) Metadata model repository
US20090112915A1 (en) Class configuration for locally cached remote data binding
US10970193B2 (en) Debugging a client synchronization service
CN117193802A (zh) 提供对应用程序内容多个实例的访问的合并空间
US20030051230A1 (en) Code management software fast transactions using state table technology
WO2002046909A1 (en) Automatically deploy and upgrade an application based on markup language application definition
BR112020007044A2 (pt) linguagem de programação
ZA200510092B (en) File system represented inside a database
Aboulsamh et al. Towards a model-driven approach to information system evolution
US10545742B2 (en) Annotation-driven framework for generating state machine updates
US20240346051A1 (en) Meta-data driven ingestion and data processing
US7747637B2 (en) For each item enumerator for custom collections of items

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090612

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120906

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120928

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121005

R150 Certificate of patent or registration of utility model

Ref document number: 5108760

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151012

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees