ビジネス・オブジェクトの構造

Adapter for JDBC は、テーブルおよびビュー・ビジネス・オブジェクトをサポートします。 データベースを使用するアプリケーションの場合、それぞれのビジネス・オブジェクトは データベース表やビューに対応し、オブジェクト内の単純属性がそれぞれ テーブルやビュー内の列に相当します。さらに、アダプターは、ストアード・プロシージャー およびクエリー・ビジネス・オブジェクトもサポートします。

テーブルまたはビュー・ビジネス・オブジェクトの場合

単純属性 とは、String、Integer、または Date などの単一値を表す属性です。したがって、同じビジネス・オブジェクトに含まれる属性を、別々のデータベース表に格納することはできませんが、次の状況が考えられます。
  • データベース表に、対応するビジネス・オブジェクトに含まれる単純属性の数よりも多くの列が含まれる場合があります。つまり、データベースの列の一部が、ビジネス・オブジェクト内に表されていません。ビジネス・オブジェクトの処理にとって必要な列のみを実際の設計に含めるようにします。
  • ビジネス・オブジェクトに、対応するデータベース表に含まれる列の数よりも多くの単純属性が含まれる場合があります。つまり、ビジネス・オブジェクト内の属性の一部が、データベース表内に表されていません。データベースの列を表していない属性は、アプリケーション固有情報を含まずにデフォルト値が設定されているか、またはストアード・プロシージャーによって指定されています。
  • ビジネス・オブジェクトは、複数のデータベース表にまたがるビューを表すことができます。アダプターでは、アプリケーション内で 起動された Create、Update、Delete 操作などの各要求を処理するときに、このようなビジネス・オブジェクトを使用できます。ただし、ビジネス・オブジェクトの要求を処理する場合には、Retrieve および RetrieveAll 要求に対してのみ、このようなビジネス・オブジェクトを使用できます。

ストアード・プロシージャー・ビジネス・オブジェクトの場合

この場合、ビジネス・オブジェクトがストアード・プロシージャー用に生成されます。ストアード・プロシージャーのすべての入力および出力パラメーターには、ビジネス・オブジェクト内に対応する属性があります。入力または出力パラメーターのいずれかが、配列や構造体などの複合型である場合、対応するビジネス・オブジェクト属性は、配列または構造体の属性を含む子ビジネス・オブジェクトを持つ子ビジネス・オブジェクト型です。ストアード・プロシージャーが結果セットを戻した場合、戻された結果セットの属性を格納する子ビジネス・オブジェクトが作成されます。

ストアード・プロシージャー・ビジネス・オブジェクトの構造を示す 2 つの例を、以下に示します。ビジネス・オブジェクト ScottStrtValues および ScottStrtvaluesStrt が、1 つの入力タイプと 2 つの出力タイプを持つストアード・プロシージャーから生成されます。 出力パラメーターの 1 つは、構造体データ型です。エンタープライズ・メタデータ・ディスカバリーによって、構造体型のビジネス・オブジェクト ScottStrtValuesStrt が生成され、子オブジェクトとして親ビジネス・オブジェクト ScottStrtValues に追加されます。親ビジネス・オブジェクト内の構造体型の属性については、ChildBOType アプリケーション固有情報が Struct に設定され、型が構造体であることを示します。ChildBOTypeName アプリケーション固有情報は、データベース内のユーザー定義構造体型の値に設定されます。

ScottStrtValues ビジネス・オブジェクトの例

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/scottstrtvalues" xmlns:scottstrtvalues=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/scottstrtvalues" xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata" xmlns:scottstrtvaluesstrt=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/scottstrtvaluesstrt"> <import namespace=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/scottstrtvaluesstrt"
schemaLocation="ScottStrtvaluesStrt.xsd"/> <import namespace="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"
schemaLocation="JDBCASI.xsd"/> <annotation> <appinfo source="commonj.connector.asi"> <asi:annotationSet xmlns:asi="commonj.connector.asi" asiNSURI=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"/> </appinfo> </annotation> <complexType name="ScottStrtvalues"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCBusinessObjectTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:SPName>SCOTT.STRTVALUES</jdbcasi:SPName> <jdbcasi:MaxNumOfRetRS>0</jdbcasi:MaxNumOfRetRS> <jdbcasi:ResultSet>false</jdbcasi:ResultSet> </jdbcasi:JDBCBusinessObjectTypeMetadata> </appinfo> </annotation> <sequence minOccurs="1" maxOccurs="1"> <element name="pkey" type="int" minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:SPParameterType>IP</jdbcasi:SPParameterType> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> <element name="fname" type="string" minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:SPParameterType>OP</jdbcasi:SPParameterType> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> <element name="strt" type="scottstrtvaluesstrt:ScottStrtvaluesStrt"
minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:SPParameterType>OP</jdbcasi:SPParameterType> <jdbcasi:ChildBOType>STRUCT</jdbcasi:ChildBOType> <jdbcasi:ChildBOTypeName>STRUCT1</jdbcasi:ChildBOTypeName> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> </sequence> </complexType> </schema>

ScottStrtValuesStrt ビジネス・オブジェクトの例

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/scottstrtvaluesstrt" xmlns:scottstrtvaluesstrt=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/scottstrtvaluesstrt" xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <import namespace="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"
schemaLocation="JDBCASI.xsd"/> <annotation> <appinfo source="commonj.connector.asi"> <asi:annotationSet xmlns:asi="commonj.connector.asi" asiNSURI=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"/> </appinfo> </annotation> <complexType name="ScottStrtvaluesStrt"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCBusinessObjectTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:SPName>SCOTT.STRTVALUES</jdbcasi:SPName> </jdbcasi:JDBCBusinessObjectTypeMetadata> </appinfo> </annotation> <sequence minOccurs="1" maxOccurs="1"> <element name="name" type="string" minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:SPParameterType></jdbcasi:SPParameterType> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> <element name="title" type="string" minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:SPParameterType></jdbcasi:SPParameterType> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> <element name="dept_num" type="int" minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:SPParameterType></jdbcasi:SPParameterType> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> </sequence> </complexType> </schema>

クエリー・ビジネス・オブジェクトの場合

クエリー・ビジネス・オブジェクトの構造を示す select ステートメントの例を示します。以下の select ステートメントの場合を考えます。

SELECT C.custid, C.custname, A.phone FROM customer C, address A WHERE (C.custid = A.custid) AND (C.custname LIKE ?)

クエリー・ビジネス・オブジェクトのフォーマットは以下のようになります。

ビジネス・オブジェクト・レベルのアプリケーション固有情報は、次のとおりです。

SelectStatement = SELECT C.custid, C.custname, A.phone FROM customer C, address A WHERE (C.custid = A.custid) AND (C.custname LIKE ?)

属性は次のとおりです。
  • custid ColumnName=CUSTID
  • custname ColumnName=CUSTNAME
  • phone ColumnName=PHONE
  • parameter1 (1 つの ? に対応、? と同じだけの数のパラメーターが必要)
  • jdbcwhereclause

サポートされる操作は RetrieveAll です。

以下の例は、クエリー・ビジネス・オブジェクト定義ファイルを示しています。

クエリー・ビジネス・オブジェクトの例
<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/querybo1" xmlns:querybo1=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/querybo1" xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <import namespace="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"
schemaLocation="JDBCASI.xsd"/> <annotation> <appinfo source="commonj.connector.asi"> <asi:annotationSet xmlns:asi="commonj.connector.asi" asiNSURI=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"/> </appinfo> </annotation> <complexType name="QueryBO1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCBusinessObjectTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:SelectStatement>select * from customer where
pkey=?</jdbcasi:SelectStatement> </jdbcasi:JDBCBusinessObjectTypeMetadata> </appinfo> </annotation> <sequence minOccurs="1" maxOccurs="1"> <element name="pkey" type="string" minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:ColumnName>PKEY</jdbcasi:ColumnName> <jdbcasi:PrimaryKey>false</jdbcasi:PrimaryKey> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> <element name="fname" type="string" minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:ColumnName>FNAME</jdbcasi:ColumnName> <jdbcasi:PrimaryKey>false</jdbcasi:PrimaryKey> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> <element name="lname" type="string" minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:ColumnName>LNAME</jdbcasi:ColumnName> <jdbcasi:PrimaryKey>false</jdbcasi:PrimaryKey> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> <element name="ccode" type="string" minOccurs="0" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:ColumnName>CCODE</jdbcasi:ColumnName> <jdbcasi:PrimaryKey>false</jdbcasi:PrimaryKey> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> <element name="parameter1" type="string" minOccurs="1" maxOccurs="1"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:ColumnName>Parameter1</jdbcasi:ColumnName> <jdbcasi:PrimaryKey>false</jdbcasi:PrimaryKey> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> <element name="jdbcwhereclause" type="string" minOccurs="0" maxOccurs="1"
default="where pkey=?"> <annotation> <appinfo source="http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:JDBCAttributeTypeMetadata xmlns:jdbcasi=
"http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/metadata"> <jdbcasi:PrimaryKey>false</jdbcasi:PrimaryKey> </jdbcasi:JDBCAttributeTypeMetadata> </appinfo> </annotation> </element> </sequence> </complexType> </schema>

すべてのビジネス・オブジェクトの場合

ビジネス・オブジェクトは、フラットまたは階層です。フラットのビジネス・オブジェクトの属性は、すべて単純属性であり、データベース表の 1 行を表します。 階層 ビジネス・オブジェクトという用語は、あらゆるレベルの子ビジネス・オブジェクトをすべて含む、完全なビジネス・オブジェクトを指します。個別 ビジネス・オブジェクトという用語は、そのビジネス・オブジェクトが子オブジェクトを含んでいるか、そのビジネス・オブジェクトが子として属しているかに関係なく、1 つのビジネス・オブジェクトを指します。個別ビジネス・オブジェクトは、複数のデータベース表にまたがるビューを表すことができます。最上位 ビジネス・オブジェクトという用語は、階層の頂点にあり、それ自体は親ビジネス・オブジェクトを持たない個別ビジネス・オブジェクトを指します。

階層ビジネス・オブジェクトは、子ビジネス・オブジェクト、子ビジネス・オブジェクトの配列、またはその組み合わせを表す属性を持ちます。そして、子ビジネス・オブジェクトも、それぞれ自身の子ビジネス・オブジェクトまたはビジネス・オブジェクトの配列を持つことができます。この関係は階層の下に向かって続きます。

単一カーディナリティー関係 は、親ビジネス・オブジェクト内の属性が 1 つの子ビジネス・オブジェクトを表すときに発生します。この場合、その属性は、その子ビジネス・オブジェクトと同じタイプです。

複数カーディナリティー関係 は、親ビジネス・オブジェクト内の属性が子ビジネス・オブジェクトの配列を表すときに発生します。この場合、その属性は、その子ビジネス・オブジェクトと同じタイプです。

アダプターでは、ビジネス・オブジェクト間での以下の関係がサポートされます。
  • 単一カーディナリティー関係
  • 単一カーディナリティー関係および所有権のないデータ
  • 複数カーディナリティー関係

どちらのカーディナリティーのタイプでも、親ビジネス・オブジェクトと子ビジネス・オブジェクトの間の関係は、その関係を保管するビジネス・オブジェクトのキー属性に含まれるアプリケーション固有情報によって記述されます。このアプリケーション固有情報の 詳細については、『属性に関するアプリケーション固有情報』の表にある 『ForeignKey』を参照してください。


ご利用条件 |


(c) Copyright IBM Corporation 2005, 2006.
(C) Copyright IBM Japan 2006
このインフォメーション・センターでは Eclipse テクノロジー (http://www.eclipse.org) が採用されています。