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.
Öffnen Sie ein Terminal in einem leeren Verzeichnis.
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
Verwenden Sie
azd init
, um das Projekt zu initialisieren.azd init --template cosmos-db-nosql-java-quickstart
Konfigurieren Sie während der Initialisierung einen eindeutigen Umgebungsnamen.
Stellen Sie das Azure Cosmos DB-Konto mit
azd up
bereit. Die Bicep-Vorlagen stellen auch eine Beispielwebanwendung bereit.azd up
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.
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.
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.
Installieren der Clientbibliothek
Die Clientbibliothek ist über Maven als azure-spring-data-cosmos
-Paket verfügbar.
Navigieren Sie zum
/src/web
-Ordner, und öffnen Sie die pom.xml-Datei.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>
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
- Authentifizieren des Clients
- Datenbank abrufen
- Container abrufen
- Erstellen eines Elements
- Abrufen eines Elements
- Abfrageelemente
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