Freigeben über


Schnellstart: Verwenden von Azure Cosmos DB for NoSQL mit dem Azure SDK für Java

In diesem Schnellstart stellen Sie eine einfache Azure Cosmos DB for Table-Anwendung mithilfe des Azure SDK für Java bereit. Azure Cosmos DB for Table ist ein schemaloser Datenspeicher, der es Anwendungen ermöglicht, strukturierte NoSQL-Daten in der Cloud zu speichern. Sie erfahren, wie Sie Tabellen, Zeilen und grundlegende Aufgaben innerhalb Ihrer Azure Cosmos DB-Ressource mithilfe des Azure-SDK für Java erstellen.

API-Referenzdokumentation | Quellcode der Bibliothek | Paket (Maven) | Azure Developer CLI

Voraussetzungen

  • Azure Developer CLI
  • Docker Desktop
  • Java 21

Sollten Sie kein Azure-Konto haben, erstellen Sie zunächst ein kostenloses Konto.

Initialisieren des Projekts

Verwenden Sie die Azure Developer CLI (azd), um ein Azure Cosmos DB for Table-Konto zu erstellen und eine containerisierte Beispielanwendung bereitzustellen. Die Beispielanwendung verwendet die Clientbibliothek zum Verwalten, Erstellen, Lesen und Abfragen von Beispieldaten.

  1. Öffnen Sie ein Terminal in einem leeren Verzeichnis.

  2. Wenn Sie noch nicht authentifiziert sind, authentifizieren Sie sich mithilfe von azd auth login bei der Azure Developer CLI. Führen Sie die vom Tool angegebenen Schritte aus, um sich mit Ihren bevorzugten Azure-Anmeldeinformationen bei der CLI zu authentifizieren.

    azd auth login
    
  3. Verwenden Sie azd init, um das Projekt zu initialisieren.

    azd init --template cosmos-db-nosql-java-quickstart
    
  4. Konfigurieren Sie während der Initialisierung einen eindeutigen Umgebungsnamen.

  5. Stellen Sie das Azure Cosmos DB-Konto mit azd up bereit. Die Bicep-Vorlagen stellen auch eine Beispielwebanwendung bereit.

    azd up
    
  6. Wählen Sie während des Bereitstellungsprozesses Ihr Abonnement, den gewünschten Standort und die Zielressourcengruppe aus. Warten Sie auf den Abschluss des Bereitstellungsvorgangs. Dieser Prozess kann ca. fünf Minuten dauern.

  7. Sobald die Bereitstellung Ihrer Azure-Ressourcen abgeschlossen ist, enthält die Ausgabe eine URL zur ausgeführten Webanwendung.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Verwenden Sie die URL in der Konsole, um im Browser zu Ihrer Webanwendung zu navigieren. Sehen Sie sich die Ausgabe der ausgeführten App an.

Screenshot der ausgeführten Web-App.

Installieren der Clientbibliothek

Die Clientbibliothek ist über Maven als azure-spring-data-cosmos-Paket verfügbar.

  1. Navigieren Sie zum /src/web-Ordner, und öffnen Sie die pom.xml-Datei.

  2. Wenn sie noch nicht vorhanden ist, fügen Sie einen Eintrag für das azure-spring-data-cosmos-Paket hinzu.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-spring-data-cosmos</artifactId>
    </dependency>
    
  3. Fügen Sie außerdem eine weitere Abhängigkeit für das azure-identity-Paket hinzu, wenn es noch nicht vorhanden ist.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
    </dependency>
    

Objektmodell

name Beschreibung
EnableCosmosRepositories Dieser Typ ist ein Methodendecorator, der zum Konfigurieren eines Repositorys für den Zugriff auf Azure Cosmos DB for NoSQL verwendet wird.
CosmosRepository Diese Klasse ist die primäre Clientklasse und wird verwendet, um Daten in einem Container zu verwalten.
CosmosClientBuilder Diese Klasse ist eine Factory, die zum Erstellen eines Clients verwendet wird, der vom Repository verwendet wird.
Query Dieser Typ ist ein Methodendecorator, der verwendet wird, um die Abfrage anzugeben, die das Repository ausführt.

Codebeispiele

Der Beispielcode in der Vorlage verwendet eine Datenbank mit dem Namen cosmicworks und einen Container mit dem Namen products. Der products-Container enthält Details wie Name, Kategorie, Menge, eindeutiger Bezeichner und ein Verkaufsflag für jedes Produkt. Der Container verwendet die /category-Eigenschaft als logischen Partitionsschlüssel.

Authentifizieren des Clients

Zunächst erstellt dieses Beispiel eine neue Klasse, die von AbstractCosmosConfiguration erbt, um die Verbindung mit Azure Cosmos DB for NoSQL zu konfigurieren.

@Configuration
@EnableCosmosRepositories
public class CosmosConfiguration extends AbstractCosmosConfiguration {
}

In der Konfigurationsklasse erstellt dieses Beispiel eine neue Instanz der CosmosClientBuilder-Klasse und konfiguriert die Authentifizierung mithilfe einer DefaultAzureCredential-Instanz.

@Bean
public CosmosClientBuilder getCosmosClientBuilder() {
    DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
        .build();
        
    return new CosmosClientBuilder()
        .endpoint("<azure-cosmos-db-nosql-account-endpoint>")
        .credential(credential);
}

Datenbank abrufen

In der Konfigurationsklasse implementiert das Beispiel eine Methode, um den Namen der vorhandenen Datenbank mit dem Namen cosmicworks zurückzugeben.

@Override
protected String getDatabaseName() {
    return "cosmicworks";
}

Container abrufen

Verwenden Sie den Container-Methodendecorator, um eine Klasse für die Darstellung von Elementen in einem Container zu konfigurieren. Erstellen Sie die Klasse, um alle Member einzuschließen, die Sie in JSON serialisieren möchten. In diesem Beispiel verfügt der Typ über einen eindeutigen Bezeichner und Felder für Kategorie, Name, Menge, Preis und Abfertigung.

@Container(containerName = "products", autoCreateContainer = false)
public class Item {
    private String id;
    private String name;
    private Integer quantity;
    private Boolean sale;

    @PartitionKey
    private String category;

    // Extra members omitted for brevity
}

Erstellen eines Elements

Erstellen Sie mithilfe von repository.save ein Element im Container.

Item item = new Item(
    "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "gear-surf-surfboards",
    "Yamba Surfboard",
    12,
    false
);
Item created_item = repository.save(item);

Lesen eines Elements

Führen Sie einen Punktlesevorgang aus, indem Sie sowohl die eindeutigen Bezeichner (id) als auch die Partitionsschlüsselfelder verwenden. Verwenden Sie repository.findById, um das jeweilige Element effizient abzurufen.

PartitionKey partitionKey = new PartitionKey("gear-surf-surfboards");
Optional<Item> existing_item = repository.findById("aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", partitionKey);
if (existing_item.isPresent()) {
    // Do something
}

Abfrageelemente

Führen Sie eine Abfrage über mehrere Elemente in einem Container aus, indem Sie eine Abfrage in der Benutzeroberfläche des Repositorys definieren. In diesem Beispiel wird der Query-Methodendecorator verwendet, um eine Methode zu definieren, die diese parametrisierte Abfrage ausführt:

SELECT * FROM products p WHERE p.category = @category
@Repository
public interface ItemRepository extends CosmosRepository<Item, String> {

    @Query("SELECT * FROM products p WHERE p.category = @category")
    List<Item> getItemsByCategory(@Param("category") String category);

}

Rufen Sie alle Ergebnisse der Abfrage mithilfe von repository.getItemsByCategory ab. Durchlaufen Sie die Ergebnisse der Abfrage.

List<Item> items = repository.getItemsByCategory("gear-surf-surfboards");
for (Item item : items) {
    // Do something
}

Bereinigen von Ressourcen

Wenn Sie die Beispielanwendung oder Ressourcen nicht mehr benötigen, entfernen Sie die entsprechende Bereitstellung und alle Ressourcen.

azd down