Partager via


Démarrage rapide : utiliser Azure Cosmos DB pour NoSQL avec Azure SDK pour Java

Dans ce guide de démarrage rapide, vous déployez une application Azure Cosmos DB for Table de base à l’aide du SDK Azure pour Java. Azure Cosmos DB for Table est un magasin de données sans schéma qui permet aux applications de stocker des données de table structurées dans le cloud. Vous apprenez à créer des tables, des lignes et à effectuer des tâches de base au sein de votre ressource Azure Cosmos DB à l’aide du SDK Azure pour Java.

Documentation de référence sur l’API | Code source de la bibliothèque | Package (Maven) | Azure Developer CLI

Prérequis

  • Azure Developer CLI
  • Docker Desktop
  • Java 21

Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.

Initialiser le projet

Utilisez l’interface Azure Developer CLI (azd) pour créer un compte Azure Cosmos DB for Table et déployer un exemple d’application conteneurisé. L’exemple d’application utilise la bibliothèque de client pour gérer, créer, lire et interroger des exemples de données.

  1. Ouvrez un terminal dans un répertoire vide.

  2. Si vous n’êtes pas encore authentifié, authentifiez-vous auprès d’Azure Developer CLI à l’aide de azd auth login. Suivez les étapes spécifiées par l’outil pour vous authentifier auprès de l’interface CLI à l’aide de vos informations d’identification Azure préférées.

    azd auth login
    
  3. Utilisez azd init pour initialiser le projet.

    azd init --template cosmos-db-nosql-java-quickstart
    
  4. Lors de l’initialisation, configurez un nom d’environnement unique.

  5. Déployez le compte Azure Cosmos DB en utilisant azd up. Les modèles Bicep déploient également un exemple d’application web.

    azd up
    
  6. Pendant le processus d’approvisionnement, sélectionnez votre abonnement, l’emplacement souhaité et le groupe de ressources cible. Attendez la fin du processus de provisionnement. Le processus peut prendre environ cinq minutes.

  7. Une fois le provisionnement de vos ressources Azure effectué, une URL vers l’application web en cours d’exécution est incluse dans la sortie.

    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. Utilisez l’URL dans la console pour accéder à votre application web dans le navigateur. Observez la sortie de l’application en cours d’exécution.

Capture d’écran de l’application web en cours d’exécution.

Installer la bibliothèque de client

La bibliothèque de client est disponible via Maven, sous forme de package azure-spring-data-cosmos.

  1. Accédez au dossier /src/web et ouvrez le fichier pom.xml.

  2. Si elle n’existe pas, ajoutez une entrée pour le package azure-spring-data-cosmos.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-spring-data-cosmos</artifactId>
    </dependency>
    
  3. Ajoutez également une autre dépendance pour le package azure-identity s’il n’en n’existe aucune.

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

Modèle objet

Nom Description
EnableCosmosRepositories Ce type est un décorateur de méthode utilisé pour configurer un référentiel pour accéder à Azure Cosmos DB for NoSQL.
CosmosRepository Cette classe est la classe cliente principale ; elle est utilisée pour gérer les données au sein d’un conteneur.
CosmosClientBuilder Cette classe est une fabrique utilisée pour créer un client utilisé par le référentiel.
Query Ce type est un décorateur de méthode utilisé pour spécifier la requête exécutée par le référentiel.

Exemples de code

L’exemple de code du modèle utilise une base de données nommée cosmicworks et un conteneur nommé products. Le conteneur products contient des détails tels que le nom, la catégorie, la quantité, un identificateur unique et un indicateur de vente pour chaque produit. Le conteneur utilise la propriété /category en tant que clé de partition logique.

Authentifier le client

Tout d’abord, cet exemple crée une classe qui hérite de AbstractCosmosConfiguration pour configurer la connexion à Azure Cosmos DB for NoSQL.

@Configuration
@EnableCosmosRepositories
public class CosmosConfiguration extends AbstractCosmosConfiguration {
}

Dans la classe de configuration, cet exemple crée une nouvelle instance de la classe CosmosClientBuilder, et configure l’authentification à l’aide d’une instance DefaultAzureCredential.

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

Obtenir une base de données

Dans la classe de configuration, l’exemple implémente une méthode pour retourner le nom de la base de données existante nommée cosmicworks.

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

Obtenir un conteneur

Utilisez le décorateur de méthode Container afin de configurer une classe pour représenter des éléments dans un conteneur. Créez la classe pour inclure tous les membres que vous souhaitez sérialiser dans JSON. Dans cet exemple, le type a un identificateur unique et des champs pour la catégorie, le nom, la quantité, le prix et la réduction.

@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
}

Créer un élément

Créez un élément dans le conteneur à l’aide de repository.save.

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

Lire un élément

Effectuez une opération de lecture de point à l’aide des champs d’identificateur unique (id) et de clé de partition. Utilisez repository.findById pour récupérer efficacement l’élément spécifique.

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
}

Éléments de requête

Effectuez une requête sur plusieurs éléments d’un conteneur en définissant une requête dans l’interface du référentiel. Cet exemple utilise le décorateur de méthode Query pour définir une méthode qui exécute cette requête paramétrisable :

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);

}

Récupérez (fetch) tous les résultats de la requête à l’aide de repository.getItemsByCategory. Effectuez une boucle parmi les résultats de la requête.

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

Nettoyer les ressources

Lorsque vous n’avez plus besoin de l’exemple d’application ou de ressources, supprimez le déploiement correspondant et toutes les ressources.

azd down