JP5108760B2 - 変更がデータストレージシステムのリレーショナルデータになされたかどうかを判定するコンピュータが実行する方法 - Google Patents
変更がデータストレージシステムのリレーショナルデータになされたかどうかを判定するコンピュータが実行する方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 75
- 238000013500 data storage Methods 0.000 title claims description 60
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 14
- 239000003607 modifier Substances 0.000 description 13
- 238000003860 storage Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 230000004048 modification Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 101100162203 Aspergillus parasiticus (strain ATCC 56775 / NRRL 5862 / SRRC 143 / SU-1) aflG gene Proteins 0.000 description 3
- 101100162205 Aspergillus parasiticus (strain ATCC 56775 / NRRL 5862 / SRRC 143 / SU-1) aflI gene Proteins 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000009125 cardiac resynchronization therapy Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 235000020004 porter Nutrition 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-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】
【0020】
部分クラスCustomerが、宣言され、3つのデフォルトメンバすなわちName、Status、およびComputeDiscountを含む。Customerのメンバを修正することを望むソフトウェア開発者は、別々のソースファイル、例えばCustomer2.cs内で、次の部分クラスCustomerを宣言することができる。
【0021】
【表2】
【0022】
ここで、この開発者は、Nameメンバを定義していない。したがって、生成されたコードで定義されたデフォルトのNameメンバが、コンパイラによって利用される。この開発者は、プロパティメンバStatusおよびメソッドメンバComputeDiscountを定義した。この2つのメンバは、生成されたソースコードで宣言された部分クラスCustomerのメンバと名前において同一であるが、異なるロジックまたは追加のロジックを含む。デフォルトメンバモディファイヤのゆえに、ソフトウェア開発者のソースコードで宣言されたメンバが、生成されたコードのプロパティおよびメソッドより優先される。デフォルトメンバモディファイヤは、開発者が、生成されたソースコードファイルを直接に修正せずに、生成されたコード内のクラスメンバをオーバーライドすることを可能にする。
【0023】
デフォルトメンバモディファイヤは、ブループリント(blueprint)と共に利用することもできる。本明細書で使用されるときに、ブループリントは、ソースコードに変換できる宣言型言語文書(例えば、拡張マークアップ言語(XML))である。ブループリントを使用して生成されるすべての部分クラスメンバは、デフォルトモディファイヤが明示的にオフに切り替えられていない限り、自動的にデフォルトモディファイヤを伴って指定することができる。次の例示的ブループリントを検討されたい。
【0024】
【表3】
【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】
【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】
【0035】
ここでは、あるカスタマに関連する注文のリストが、EntitySetクラスを使用してセットコンテナとして実装され、ある注文に関連するカスタマが、EntityRefクラスを使用して参照コンテナとして実装されている。EntitySetクラスおよびEntityRefクラスは、下で詳細に説明する。
【0036】
EntitySetの次の例示的実装を検討されたい。
【0037】
【表6】
【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】
【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】
【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】
【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】
【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】
【0065】
ジェネリッククラスTableでメンバAddおよびRemoveを定義することによって、個々のデータオブジェクトテーブルごとにAddメンバおよびRemoveメンバを作成する必要がなくなる。
【0066】
図9に、データストレージシステムテーブルに対応するデータオブジェクトテーブルのセットを作成する方法900を示す。符号902で開始して、データストレージシステム内のテーブルの個数および各テーブルのタイプを判定する。904で、データストレージシステムテーブルに対応するデータオブジェクトテーブルを、ジェネリッククラスを使用してインスタンス化する。906で、チェックを行って、モデリングすべき追加のデータストレージシステムテーブルがあるかどうかを判定する。そうである場合には、904で次のデータオブジェクトテーブルをインスタンス化する。すべてのデータストレージシステムテーブルをモデリングし終えている場合には、この方法は、908で終了する。
【0067】
例の在庫システムに関して、データコンテキスは、データストレージシステムテーブルをミラーリングするデータオブジェクトテーブルのセットを使用して作成することができる。次のC#コードを検討されたい。
【0068】
【表12】
【0069】
ここでは、ジェネリッククラスTableが、Customers、Shippers、Suppliers、Orders、およびProductsのコレクションを作成するのに使用されている。本明細書で使用されるときに、Table<T>は、対応するデータストレージシステムテーブルの仮想表現である。生成されるコードは、個々のデータオブジェクトテーブルのAddメソッドおよびRemoveメソッドに関する強い型検査を提供する。データオブジェクトテーブルの生成は、ソフトウェア開発者がデータストレージシステムのテーブルごとに別々のテーブルを定義する必要をもなくし、開発者の作業時間およびデバッグ時間を減らす。
【0070】
新たに作成されるインスタンスおよび削除される取り出されるインスタンスだけが、強く型付けされるテーブルを使用して追跡される。新しいインスタンスおよび削除されるインスタンスが適当に追跡されることを保証するために、生成されるコードを呼び出す例示的な方法を示す。
【0071】
【表13】
【0072】
V.リレーショナルデータ変更の検出および追跡
コード生成システムは、データストレージシステムからオブジェクトモデルにプルされたリレーショナルデータに対する変更の検出および追跡をも提供することができる。リレーショナルデータが、データストレージシステムからプルされて、アプリケーションによって使用されるデータオブジェクトに投入されるときに、そのデータオブジェクトが、ORMシステムに知られずに修正される場合がある。しかし、挿入、修正、または削除のすべてを、データストレージシステムに戻って永続させなければならない。さらに、第1アプリケーションの処理中に、他のアプリケーションが、データストレージシステムにアクセスし、第1アプリケーションによって使用されるデータオブジェクトを投入するのに使用されたリレーショナルデータを修正する場合がある。リレーショナルデータが、第1アプリケーションからデータストレージシステムに永続されるときに、これが、他のアプリケーションによって行われた変更を上書きしてはならない。
【0073】
1つの単純な解決策は、すべてのデータオブジェクトのコピーすなわち、データストレージシステムから取り出されたオリジナルデータを含むコピーを維持することである。これらのコピーを、データオブジェクトの現在の値と比較して、データオブジェクトが修正されたかどうかを判定することができる。これは、未変更のままであるデータオブジェクトに関して同一のコピーを格納するのにメモリが使用されることをもたらす。さらに、修正がデータストレージシステムに永続されるときに、各データオブジェクトは、そのデータオブジェクトに対する変更があったかどうかを判定するために、オリジナルの値を含むコピーと比較される。未変更のままであるデータオブジェクトを比較することによって、処理時間が浪費される。
【0074】
開示される主題の一態様では、コードジェネレータコンポーネントは、開発者によって可視であり修正可能であるソースレベルコードを生成して、変更の検出および追跡を実装することができる。変更の検出および追跡は、中間フォーマット(例えば、バイトコードまたはIL(中間言語))に隠蔽されるのではなく、ソースレベルコードで実装することができる。実装をソースレベルコードに配置することによって、その実装がソフトウェア開発者にトランスペアレントになる。
【0075】
生成されるコードは、アプリケーションによって修正されるデータオブジェクトだけについてコピーを作成することができる。これは、各データオブジェクトのコピーを作成する必要をなくし、コピーの個数を制限することによってスペースオーバーヘッドを最小にする。さらに、これは、データオブジェクトが変更されたかどうかを判定するために、未変更のデータオブジェクトをそのコピーと比較するのに必要な処理時間をなくす。
【0076】
ここで図10に移ると、コンテナソースコードに、データオブジェクトが修正されようとしているときにORMシステム内の変更検出コンポーネントに通知する変更通知コンポーネントを含めることができる。変更通知コンポーネントは、イベントハンドラを利用することができる。図10に、修正されたオブジェクトを追跡する方法1000を示す。符号1002で開始して、アプリケーションが、データオブジェクトを更新する呼び出しを行う。1004で、データオブジェクトを更新する呼び出しによって、通知がトリガされる。1006で、変更検出コンポーネントが、データオブジェクトが以前にコピーされたかどうかを検査する。データオブジェクトが前にコピーされていない場合には、変更検出コンポーネントは、1008で、そのデータオブジェクトをコピーし、データオブジェクトのコピーを、修正されたデータオブジェクトのリストに追加する。データオブジェクトが既にコピーされている場合には、オリジナルデータオブジェクトのコピーが、既にリストに追加されており、これを上書きしてはならない。1010で、アプリケーションによる指定に従って、データオブジェクトを更新する。次の例示的なC#コードを検討されたい。
【0077】
【表14】
【0078】
通知インターフェースを使用して、変化するオブジェクトに関するイベントハンドラを指定することができる。
【0079】
【表15】
【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に記載の方法。 - 請求項1に記載の方法をプロセッサにより実行するコンピュータ実行可能命令をその上に格納されることを特徴とするコンピュータ可読記録媒体。
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)
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)
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 |
-
2005
- 2005-07-29 US US11/193,690 patent/US7631011B2/en active Active
-
2006
- 2006-06-29 EP EP06785856.3A patent/EP1913490B1/en active Active
- 2006-06-29 WO PCT/US2006/025390 patent/WO2007018819A2/en active Application Filing
- 2006-06-29 JP JP2008523899A patent/JP5108760B2/ja not_active Expired - Fee Related
- 2006-06-29 CN CN2010102449318A patent/CN101894027B/zh active Active
- 2006-06-29 CN CN2006800277713A patent/CN101523384B/zh active Active
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 |