Oracle® Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス 12c (12.1.2) E48005-01 |
|
![]() 前 |
![]() 次 |
@NoSql
を使用して、リレーショナルでない(つまり、SQLではない)データソースを指定します。EclipseLinkは、非リレーショナル・データをオブジェクトにマップし、JPAを介してそのデータにアクセスできます。
注釈要素
表2-42は、この注釈の要素を示しています。
表2-42 @NoSqlの注釈要素
注釈要素 | 説明 | デフォルト |
---|---|---|
|
エンティティ構造の名前。
|
|
|
(オプション)データがデータベース内に格納されるタイプ構造(データ形式)。
|
XML |
使用方法
dataFormat
は、使用されるNoSQLプラットフォームによって異なります。
MongoDBでは、MAPPED
を使用します。
Oracle NoSQLでは、MAPPED
(キー/値データ用)またはXML
(単一XMLドキュメント用)を使用します。
XMLファイルおよびXMLメッセージングでは、XML
を使用します。
サポートされるデータソース
EclipseLinkでは、JavaEE Connector Architecture CCI (Common Client Interface) APIを介した汎用NoSQLおよびEISデータソースと同様に、様々なNoSQLおよびEISプラットフォームがサポートされています。独自のEISPlatform
サブクラスおよびJCAアダプタも定義できます。
EclipseLinkでは、次のデータソースがサポートされています。
MongoDB
Oracle NoSQL
XMLファイル
JMS
Oracle AQ
例
例2-78に、XMLデータソースとの@NoSql
の使用を示します。
例2-78 @NoSql注釈とXMLの使用
@Entity @NoSql(dataType="order") public class Order { @Id @GeneratedValue @Field(name="@id") private long id; @Basic @Field(name="@description") private String description; @Embedded @Field(name="delivery-address") private Address deliveryAddress @ElementCollection @Field(name="orderLines/order-line") private List<OrderLine> orderLines; @ManyToOne @JoinField(name="customer-id") private Customer customer; } @Embeddable @NoSql public class OrderLine { @Field(name="@line-number") private int lineNumber; @Field(name="@item-name") private String itemName; @Field(name="@quantity") private int quantity; }
これにより、次のXMLデータが作成されます。
<order id="4F99702B271B1948027FAF06" description="widget order"> <deliveryAddress street="1712 Hasting Street" city="Ottawa" province="ON" postalCode="L5J1H5"/> <order-lines> <order-line lineNumber="1" itemName="widget A" quantity="5"/> <order-line lineNumber="2" itemName="widget B" quantity="1"/> <order-line lineNumber="3" itemName="widget C" quantity="2"/> <order-lines> <customer-id>4F99702B271B1948027FAF08</customer-id> <order>
例2-79に、JSONデータソースとの@NoSql
の使用を示します。
例2-79 @NoSql注釈とJSONの使用
@Entity @NoSql(dataType="orders", dataFormat=DataFormatType.MAPPED) public class Order { @Id @GeneratedValue @Field(name="_id") private long id; @Basic @Field(name="description") private String description; @Embedded @Field(name="deliveryAddress") private Address deliveryAddress @ElementCollection @Field(name="orderLines") private List<OrderLine> orderLines; @ManyToOne @JoinField(name="customerId") private Customer customer; } @Embeddable @NoSql(dataFormat=DataFormatType.MAPPED) public class OrderLine { @Field(name="lineNumber") private int lineNumber; @Field(name="itemName") private String itemName; @Field(name="quantity") private int quantity; }
これにより、次のJSONドキュメントが作成されます。
{ "_id": "4F99702B271B1948027FAF06", "description": "widget order", "deliveryAddress": { "street": "1712 Hasting Street", "city": "Ottawa", "province": "ON", "postalCode": "L5J1H5", }, "orderLines": [ {"lineNumber": "1", "itemName": "widget A", "quantity": "5"}, {"lineNumber": "2", "itemName": "widget B", "quantity": "1"}, {"lineNumber": "3", "itemName": "widget C", "quantity": "2"} ], "customerId": "4F99702B271B1948027FAF08", }
関連項目
詳細は、次を参照してください。
Oracle Coherence Oracle ToplinkおよびCoherence Grid統合ガイド
『Oracle TopLinkの理解』の非SQLデータベースの使用に関する項
『Oracle TopLinkの理解』のNoSQLデータベースの使用に関する項
『Oracle TopLinkソリューション・ガイド』のTopLinkと非リレーショナル・データベースの使用に関する項