Delen via


Quickstart: Azure Cosmos DB for NoSQL gebruiken met Azure SDK voor Java

In deze quickstart implementeert u een eenvoudige Azure Cosmos DB for Table-toepassing met behulp van de Azure SDK voor Java. Azure Cosmos DB for Table is een schemaloos gegevensarchief waarmee toepassingen gestructureerde tabelgegevens in de cloud kunnen opslaan. U leert hoe u tabellen, rijen maakt en basistaken uitvoert in uw Azure Cosmos DB-resource met behulp van de Azure SDK voor Java.

API-referentiedocumentatiebibliotheek | broncodepakket | (Maven) | Azure Developer CLI

Vereisten

  • Azure Developer CLI
  • Docker Desktop
  • Java 21

Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.

Het project initialiseren

Gebruik de Azure Developer CLI (azd) om een Azure Cosmos DB for Table-account te maken en een in een container geplaatste voorbeeldtoepassing te implementeren. De voorbeeldtoepassing maakt gebruik van de clientbibliotheek voor het beheren, maken, lezen en opvragen van voorbeeldgegevens.

  1. Open een terminal in een lege map.

  2. Als u nog niet bent geverifieerd, moet u zich verifiëren bij de Azure Developer CLI met behulp van azd auth login. Volg de stappen die door het hulpprogramma zijn opgegeven om te verifiëren bij de CLI met behulp van uw favoriete Azure-referenties.

    azd auth login
    
  3. Gebruik azd init dit om het project te initialiseren.

    azd init --template cosmos-db-nosql-java-quickstart
    
  4. Configureer tijdens de initialisatie een unieke omgevingsnaam.

  5. Implementeer het Azure Cosmos DB-account met behulp van azd up. De Bicep-sjablonen implementeren ook een voorbeeldwebtoepassing.

    azd up
    
  6. Selecteer tijdens het inrichtingsproces uw abonnement, gewenste locatie en doelresourcegroep. Wacht tot het inrichtingsproces is voltooid. Het proces kan ongeveer vijf minuten duren.

  7. Zodra het inrichten van uw Azure-resources is voltooid, wordt er een URL naar de actieve webtoepassing opgenomen in de uitvoer.

    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. Gebruik de URL in de console om naar uw webtoepassing in de browser te navigeren. Bekijk de uitvoer van de actieve app.

Schermopname van de actieve webtoepassing.

De clientbibliotheek installeren

De clientbibliotheek is beschikbaar via Maven, als pakket azure-spring-data-cosmos .

  1. Navigeer naar de /src/web map en open het pom.xml-bestand .

  2. Als deze nog niet bestaat, voegt u een vermelding voor het azure-spring-data-cosmos pakket toe.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-spring-data-cosmos</artifactId>
    </dependency>
    
  3. Voeg ook nog een afhankelijkheid voor het azure-identity pakket toe als het nog niet bestaat.

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

Objectmodel

Name Beschrijving
EnableCosmosRepositories Dit type is een methode-decorator die wordt gebruikt om een opslagplaats te configureren voor toegang tot Azure Cosmos DB for NoSQL.
CosmosRepository Deze klasse is de primaire clientklasse en wordt gebruikt voor het beheren van gegevens in een container.
CosmosClientBuilder Deze klasse is een fabriek die wordt gebruikt om een client te maken die door de opslagplaats wordt gebruikt.
Query Dit type is een methode-decorator die wordt gebruikt om de query op te geven die door de opslagplaats wordt uitgevoerd.

Codevoorbeelden

De voorbeeldcode in de sjabloon maakt gebruik van een database met de naam cosmicworks en container.products De products container bevat details zoals naam, categorie, hoeveelheid, een unieke id en een verkoopvlag voor elk product. De container gebruikt de /category eigenschap als een logische partitiesleutel.

De client verifiëren

Eerst maakt dit voorbeeld een nieuwe klasse die de verbinding met Azure Cosmos DB for NoSQL over neemt AbstractCosmosConfiguration om de verbinding te configureren.

@Configuration
@EnableCosmosRepositories
public class CosmosConfiguration extends AbstractCosmosConfiguration {
}

In de configuratieklasse maakt dit voorbeeld een nieuw exemplaar van de CosmosClientBuilder klasse en configureert verificatie met behulp van een DefaultAzureCredential exemplaar.

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

Een database ophalen

In de configuratieklasse implementeert het voorbeeld een methode om de naam van de bestaande database met de naam cosmicworkste retourneren.

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

Een container ophalen

Gebruik de Container methode-decorator om een klasse te configureren om items in een container weer te geven. Ontwerp de klasse om alle leden op te nemen die u in JSON wilt serialiseren. In dit voorbeeld heeft het type een unieke id en velden voor categorie, naam, hoeveelheid, prijs en klaring.

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

Een item maken

Maak een item in de container met behulp van repository.save.

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

Een item lezen

Voer een puntleesbewerking uit met behulp van zowel de unieke id (id) als de partitiesleutelvelden. Gebruik repository.findById dit om het specifieke item efficiënt op te halen.

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
}

Query-items

Voer een query uit op meerdere items in een container door een query te definiëren in de interface van de opslagplaats. In dit voorbeeld wordt de Query methode-decorator gebruikt om een methode te definiëren waarmee deze geparameteriseerde query wordt uitgevoerd:

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

}

Haal alle resultaten van de query op met behulp van repository.getItemsByCategory. Doorloop de resultaten van de query.

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

Resources opschonen

Wanneer u de voorbeeldtoepassing of resources niet meer nodig hebt, verwijdert u de bijbehorende implementatie en alle resources.

azd down