Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

オブジェクト永続性インターフェイス

AWS SDK の一部には、直接データプレーンオペレーションを実行しない、オブジェクト永続性インターフェイスが用意されています。代わりに、DynamoDB テーブルおよびインデックスに項目を表すオブジェクト作成し、これらのオブジェクトとのみやり取りします。これにより、データベース中心のコードではなく、オブジェクト中心のコードを記述できます。

注記

オブジェクト永続性インターフェイスは、AWS SDK for Java および AWS SDK for .NET で使用できます。詳細については、「DynamoDB 用の高レベルプログラミングインターフェイス」を参照してください。

次の Java プログラムは、DynamoDBMapper という AWS SDK for Java のオブジェクト永続性インターフェイスを使用します。MusicItem クラスは、Music テーブル内の項目を表します。

package com.amazonaws.codesamples; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBRangeKey; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable; @DynamoDBTable(tableName="Music") public class MusicItem { private String artist; private String songTitle; private String albumTitle; private int year; @DynamoDBHashKey(attributeName="Artist") public String getArtist() { return artist;} public void setArtist(String artist) {this.artist = artist;} @DynamoDBRangeKey(attributeName="SongTitle") public String getSongTitle() { return songTitle;} public void setSongTitle(String songTitle) {this.songTitle = songTitle;} @DynamoDBAttribute(attributeName = "AlbumTitle") public String getAlbumTitle() { return albumTitle;} public void setAlbumTitle(String albumTitle) {this.albumTitle = albumTitle;} @DynamoDBAttribute(attributeName = "Year") public int getYear() { return year; } public void setYear(int year) { this.year = year; } }

次に、MusicItem オブジェクトをインスタンス化し、load()DynamoDBMapper メソッドを使用して曲を取得できます。その後、プログラムは、その曲がリリースされた年を出力します。

com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper クラスは DynamoDB オブジェクト永続性インターフェイスを実装します。DynamoDBMapper が低レベルクライアント (AmazonDynamoDB) にラッパーとしてどのように機能するかに注意してください。

package com.amazonaws.codesamples; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; public class MusicMapperDemo { public static void main(String[] args) { AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDBMapper mapper = new DynamoDBMapper(client); MusicItem keySchema = new MusicItem(); keySchema.setArtist("No One You Know"); keySchema.setSongTitle("Call Me Today"); try { MusicItem result = mapper.load(keySchema); if (result != null) { System.out.println( "The song was released in "+ result.getYear()); } else { System.out.println("No matching song was found"); } } catch (Exception e) { System.err.println("Unable to retrieve data: "); System.err.println(e.getMessage()); } } }