Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Java-Anmerkungen für DynamoDB
Dieser Abschnitt beschreibt die Anmerkungen, die für das Mapping Ihrer Klassen und Eigenschaften zu Tabellen und Attributen in Amazon DynamoDB verfügbar sind.
Die entsprechende Javadoc-Dokumentation finden Sie in der Referenz unter Zusammenfassung der Annotationstypen.AWS SDK for Java API
Anmerkung
In den folgenden Anmerkungen sind ausschließlich DynamoDBTable
und der DynamoDBHashKey
erforderlich.
Themen
D ynamoDBAttribute
Ordnet eine Eigenschaft einem Tabellenattribut zu. Standardmäßig wird jede Klasseneigenschaft einem Elementattribut mit demselben Namen zugeordnet. Wenn die Namen jedoch nicht identisch sind, können Sie diese Anmerkung verwenden, um dem Attribut eine Eigenschaft zuzuordnen. Im folgenden Java-Ausschnitt ordnet DynamoDBAttribute
die BookAuthors
-Eigenschaft dem Authors
-Attributnamen in der Tabelle zu.
@DynamoDBAttribute(attributeName = "Authors") public List<String> getBookAuthors() { return BookAuthors; } public void setBookAuthors(List<String> BookAuthors) { this.BookAuthors = BookAuthors; }
Der DynamoDBMapper
verwendet Authors
als Attributnamen bei der Speicherung des Objekts in die Tabelle.
D ynamoDBAuto GeneratedKey
Markiert eine Partitionsschlüssel- oder Sortierschlüsseleigenschaft als automatisch generiert. DynamoDBMapper
generiert UUID
Das folgende Beispiel zeigt die Verwendung von automatisch generierten Schlüsseln.
@DynamoDBTable(tableName="AutoGeneratedKeysExample") public class AutoGeneratedKeys { private String id; private String payload; @DynamoDBHashKey(attributeName = "Id") @DynamoDBAutoGeneratedKey public String getId() { return id; } public void setId(String id) { this.id = id; } @DynamoDBAttribute(attributeName="payload") public String getPayload() { return this.payload; } public void setPayload(String payload) { this.payload = payload; } public static void saveItem() { AutoGeneratedKeys obj = new AutoGeneratedKeys(); obj.setPayload("abc123"); // id field is null at this point DynamoDBMapper mapper = new DynamoDBMapper(dynamoDBClient); mapper.save(obj); System.out.println("Object was saved with id " + obj.getId()); } }
D ynamoDBAuto GeneratedTimestamp
Generiert automatisch einen Zeitstempel.
@DynamoDBAutoGeneratedTimestamp(strategy=DynamoDBAutoGenerateStrategy.ALWAYS) public Date getLastUpdatedDate() { return lastUpdatedDate; } public void setLastUpdatedDate(Date lastUpdatedDate) { this.lastUpdatedDate = lastUpdatedDate; }
Optional kann die Strategie für die automatische Generierung durch Angabe eines Strategieattributs definiert werden. Der Standardwert ist ALWAYS
.
D ynamoDBDocument
Gibt an, dass eine Klasse als Amazon-DynamoDB-Dokument serialisiert werden kann.
Angenommen, Sie möchten ein JSON Dokument einem DynamoDB-Attribut vom Typ Map () M
zuordnen. Im folgenden Codebeispiel wird ein Element definiert, das ein verschachteltes Attribut (Bilder) des Typs „Map“ enthält.
public class ProductCatalogItem { private Integer id; //partition key private Pictures pictures; /* ...other attributes omitted... */ @DynamoDBHashKey(attributeName="Id") public Integer getId() { return id;} public void setId(Integer id) {this.id = id;} @DynamoDBAttribute(attributeName="Pictures") public Pictures getPictures() { return pictures;} public void setPictures(Pictures pictures) {this.pictures = pictures;} // Additional properties go here. @DynamoDBDocument public static class Pictures { private String frontView; private String rearView; private String sideView; @DynamoDBAttribute(attributeName = "FrontView") public String getFrontView() { return frontView; } public void setFrontView(String frontView) { this.frontView = frontView; } @DynamoDBAttribute(attributeName = "RearView") public String getRearView() { return rearView; } public void setRearView(String rearView) { this.rearView = rearView; } @DynamoDBAttribute(attributeName = "SideView") public String getSideView() { return sideView; } public void setSideView(String sideView) { this.sideView = sideView; } } }
Anschließend könnten Sie ein neues ProductCatalog
-Element mit Pictures
speichern wie im folgenden Beispiel gezeigt.
ProductCatalogItem item = new ProductCatalogItem(); Pictures pix = new Pictures(); pix.setFrontView("http://example.com/products/123_front.jpg"); pix.setRearView("http://example.com/products/123_rear.jpg"); pix.setSideView("http://example.com/products/123_left_side.jpg"); item.setPictures(pix); item.setId(123); mapper.save(item);
Das resultierende ProductCatalog
Element würde wie folgt aussehen (im JSON Format).
{ "Id" : 123 "Pictures" : { "SideView" : "http://example.com/products/123_left_side.jpg", "RearView" : "http://example.com/products/123_rear.jpg", "FrontView" : "http://example.com/products/123_front.jpg" } }
ynamoDBHashD-Taste
Ordnet eine Klasseneigenschaft dem Partitionsschlüssel der Tabelle zu. Die Eigenschaft muss ein skalarer Zeichenfolge-, Zahlen- oder Binärtyp sein. Die Eigenschaft darf kein Sammlungstyp sein.
Angenommen, Sie besitzen eine Tabelle ProductCatalog
, die Id
als Primärschlüssel verwendet. Der folgende Java-Code definiert eine CatalogItem
-Klasse und ordnet ihre Eigenschaft Id
dem Primärschlüssel der Tabelle ProductCatalog
mithilfe des Tags @DynamoDBHashKey
zu.
@DynamoDBTable(tableName="ProductCatalog") public class CatalogItem { private Integer Id; @DynamoDBHashKey(attributeName="Id") public Integer getId() { return Id; } public void setId(Integer Id) { this.Id = Id; } // Additional properties go here. }
D ynamoDBIgnore
Zeigt der DynamoDBMapper
-Instance an, dass die zugeordnete Eigenschaft ignoriert werden sollte. Beim Speichern der Daten in die Tabelle, speichert der DynamoDBMapper
diese Eigenschaft nicht in die Tabelle.
Wird auf die Getter-Methode oder das Klassenfeld für eine nicht modellierte Eigenschaft angewendet. Wenn die Anmerkung direkt auf das Klassenfeld angewendet wird, müssen die entsprechenden Getter- und Setter-Methoden in derselben Klasse deklariert werden.
D ynamoDBIndex HashKey
Ordnet eine Klasseneigenschaft dem Partitionsschlüssel eines globalen sekundären Index zu. Die Eigenschaft muss ein skalarer Zeichenfolge-, Zahlen- oder Binärtyp sein. Die Eigenschaft darf kein Sammlungstyp sein.
Verwenden Sie diese Anmerkung, wenn Sie Query
einen globalen sekundären Index brauchen. Sie müssen den Indexnamen angeben (globalSecondaryIndexName
). Wenn sich der Name der Klasseneigenschaft vom Indexpartitionsschlüssel unterscheidet, müssen Sie auch den Namen dieses Indexattributs (attributeName
).
D ynamoDBIndex RangeKey
Ordnet eine Klasseneigenschaft dem Sortierschlüssel eines globalen sekundären Index oder eines lokalen sekundären Index zu. Die Eigenschaft muss ein skalarer Zeichenfolge-, Zahlen- oder Binärtyp sein. Die Eigenschaft darf kein Sammlungstyp sein.
Verwenden Sie diese Anmerkung, wenn Sie Query
für einen lokalen sekundären Index oder einen globalen sekundären Index ausführen müssen und die Ergebnisse mithilfe des Index-Sortierschlüssels verfeinern möchten. Sie müssen den Indexnamen angeben (entweder globalSecondaryIndexName
oder localSecondaryIndexName
). Wenn der Name der Klasseneigenschaft sich von dem Indexsortierschlüssel unterscheidet, müssen Sie auch den Namen dieses Indexattributs (attributeName
).
ynamoDBRangeD-Schlüssel
Ordnet eine Klasseneigenschaft dem Sortierschlüssel der Tabelle zu. Die Eigenschaft muss ein skalarer Zeichenfolge-, Zahlen- oder Binärtyp sein. Sie darf kein Sammlungstyp sein.
Wenn der Primärschlüssel zusammengesetzt ist (Partitionsschlüssel und Sortierschlüssel), können Sie diesen Tag verwenden, um Ihr Klassenfeld dem Sortierschlüssel zuzuordnen. Angenommen, Sie verfügen über eine Tabelle Reply
, die Antworten für Forum-Threads speichert. Jeder Thread kann zahlreiche Antworten enthalten. Daher ist der Primärschlüssel dieser Tabelle sowohl die ThreadId
als auch ReplyDateTime
. Die ThreadId
ist der Partitionsschlüssel und ReplyDateTime
ist der Sortierschlüssel.
Der folgende Java-Code definiert die Klasse Reply
und ordnet sie der Tabelle Reply
zu. Es werden die @DynamoDBHashKey
und @DynamoDBRangeKey
-Tags für die Identifizierung der Klasseneigenschaften, die dem Primärschlüssel zugeordnet werden, verwendet.
@DynamoDBTable(tableName="Reply") public class Reply { private Integer id; private String replyDateTime; @DynamoDBHashKey(attributeName="Id") public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @DynamoDBRangeKey(attributeName="ReplyDateTime") public String getReplyDateTime() { return replyDateTime; } public void setReplyDateTime(String replyDateTime) { this.replyDateTime = replyDateTime; } // Additional properties go here. }
D ynamoDBTable
Identifiziert die Zieltabelle in DynamoDB. Der folgende Java-Code definiert beispielsweise die Klasse Developer
und ordnet sie der People
-Tabelle in DynamoDB zu.
@DynamoDBTable(tableName="People") public class Developer { ...}
Die @DynamoDBTable
-Anmerkung kann geerbt werden. Jede neue Klasse, die von der Klasse Developer
erbt, wird ebenfalls der Tabelle People
zugeordnet. Angenommen, Sie erstellen beispielsweise eine Lead
-Klasse, die von der Developer
-Klasse erbt. Da Sie die Klasse Developer
der Tabelle People
zugeordnet haben, werden die Objekte der Klasse Lead
ebenfalls in dieser Tabelle gespeichert.
Die @DynamoDBTable
kann auch außer Kraft gesetzt werden. Jede neue Klasse, die standardmäßig von der Klasse Developer
erbt, wird dieser Tabelle People
zugeordnet. Sie können jedoch dieses Standardmapping außer Kraft setzen. Wenn Sie beispielsweise eine Klasse erstellen, die von der Klasse Developer
erbt, können Sie sie ausdrücklich einer anderen Tabelle zuweisen, indem Sie die Anmerkung @DynamoDBTable
hinzufügen wie im folgenden Java-Codebeispiel gezeigt.
@DynamoDBTable(tableName="Managers") public class Manager extends Developer { ...}
D ynamoDBType Konvertiert
Eine Anmerkung, die angibt, dass eine Eigenschaft einen benutzerdefinierten Typkonverter verwendet. Kann in einer benutzerdefinierten Anmerkung mit Anmerkungen versehen werden, um dem DynamoDBTypeConverter
zusätzliche Eigenschaften zu übergeben.
Die DynamoDBTypeConverter
-Schnittstelle ermöglicht das Mapping eigener beliebiger Datentypen zu einem Datentyp, der von DynamoDB nativ unterstützt wird. Weitere Informationen finden Sie unter Zuordnen beliebiger Daten in DynamoDB.
D ynamoDBTyped
Eine Anmerkung, mit der die standardmäßige Attributtypbindung überschrieben wird. Standard-Typen erfordern die Anmerkung nicht, wenn Sie die Standard-Attributbindung für diesen Typ anwenden.
ynamoDBVersionD-Attribut
Identifiziert eine Klasseneigenschaft für das Speichern einer Versionsnummer der optimistischen Sperre. DynamoDBMapper
weist dieser Eigenschaft eine Versionsnummer zu, wenn ein neues Element gespeichert wird, und erhöht sie bei jeder Aktualisierung des Elements. Ausschließlich Zahlentypen und skalare Typen werden unterstützt. Weitere Informationen zu Datentypen finden Sie unter Datentypen. Weitere Informationen über das Versioning finden Sie unter DynamoDB und optimistisches Sperren mit Versionsnummer.