

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
<a name="DynamoDBMapper.Annotations"></a>

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 unter [Annotation Types Summary](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/package-summary.html) in der [AWS SDK für Java API-Referenz](https://docs.aws.amazon.com/sdk-for-java/latest/reference/).

**Anmerkung**  
In den folgenden Anmerkungen sind ausschließlich `DynamoDBTable` und der `DynamoDBHashKey` erforderlich. 

**Topics**
+ [Dynamo DBAttribute](#DynamoDBMapper.Annotations.DynamoDBAttribute)
+ [Dynamo DBAuto GeneratedKey](#DynamoDBMapper.Annotations.DynamoDBAutoGeneratedKey)
+ [Dynamo DBAuto GeneratedTimestamp](#DynamoDBMapper.Annotations.DynamoDBAutoGeneratedTimestamp)
+ [Dynamo DBDocument](#DynamoDBMapper.Annotations.DynamoDBDocument)
+ [Dynamo-Schlüssel DBHash](#DynamoDBMapper.Annotations.DynamoDBHashKey)
+ [Dynamo DBIgnore](#DynamoDBMapper.Annotations.DynamoDBIgnore)
+ [Dynamo DBIndex HashKey](#DynamoDBMapper.Annotations.DynamoDBIndexHashKey)
+ [Dynamo DBIndex RangeKey](#DynamoDBMapper.Annotations.DynamoDBIndexRangeKey)
+ [Dynamo-Schlüssel DBRange](#DynamoDBMapper.Annotations.DynamoDBRangeKey)
+ [Dynamo DBTable](#DynamoDBMapper.Annotations.DynamoDBTable)
+ [Dynamo wurde konvertiert DBType](#DynamoDBMapper.Annotations.DynamoDBTypeConverted)
+ [Dynamo DBTyped](#DynamoDBMapper.Annotations.DynamoDBTyped)
+ [Dynamo-Attribut DBVersion](#DynamoDBMapper.Annotations.DynamoDBVersionAttribute)

## Dynamo DBAttribute
<a name="DynamoDBMapper.Annotations.DynamoDBAttribute"></a>

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. 

## Dynamo DBAuto GeneratedKey
<a name="DynamoDBMapper.Annotations.DynamoDBAutoGeneratedKey"></a>

Kennzeichnet eine Partitions- oder Sortierschlüsseleigenschaft als automatisch generiert. `DynamoDBMapper` generiert beim Speichern dieser Attribute nach dem Zufallsprinzip eine [UUID](http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html). Ausschließlich Zeichenfolgeeigenschaften können als automatisch generierte Schlüssel markiert werden. 

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());
    }
}
```

## Dynamo DBAuto GeneratedTimestamp
<a name="DynamoDBMapper.Annotations.DynamoDBAutoGeneratedTimestamp"></a>

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`.

## Dynamo DBDocument
<a name="DynamoDBMapper.Annotations.DynamoDBDocument"></a>

Gibt an, dass eine Klasse als Amazon-DynamoDB-Dokument serialisiert werden kann.

Angenommen, Sie möchten ein JSON-Dokument einem DynamoDB-Attribut des Typs „Map“ zuweisen (`M`). 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"
  }
}
```

## Dynamo-Schlüssel DBHash
<a name="DynamoDBMapper.Annotations.DynamoDBHashKey"></a>

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.
}
```

## Dynamo DBIgnore
<a name="DynamoDBMapper.Annotations.DynamoDBIgnore"></a>

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. 

## Dynamo DBIndex HashKey
<a name="DynamoDBMapper.Annotations.DynamoDBIndexHashKey"></a>

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`).

## Dynamo DBIndex RangeKey
<a name="DynamoDBMapper.Annotations.DynamoDBIndexRangeKey"></a>

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`).

## Dynamo-Schlüssel DBRange
<a name="DynamoDBMapper.Annotations.DynamoDBRangeKey"></a>

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.
}
```

## Dynamo DBTable
<a name="DynamoDBMapper.Annotations.DynamoDBTable"></a>

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 { ...}
```

## Dynamo wurde konvertiert DBType
<a name="DynamoDBMapper.Annotations.DynamoDBTypeConverted"></a>

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 willkürlicher Daten in DynamoDB](DynamoDBMapper.ArbitraryDataMapping.md).

## Dynamo DBTyped
<a name="DynamoDBMapper.Annotations.DynamoDBTyped"></a>

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. 

## Dynamo-Attribut DBVersion
<a name="DynamoDBMapper.Annotations.DynamoDBVersionAttribute"></a>

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](HowItWorks.NamingRulesDataTypes.md#HowItWorks.DataTypes). Weitere Informationen über das Versioning finden Sie unter [DynamoDB und optimistische Sperren mit Versionsnummer](DynamoDBMapper.OptimisticLocking.md).