Partekatu honen bidez:


Inicio rápido: Uso de Azure Cosmos DB for NoSQL con Azure SDK para Java

En este inicio rápido, implementará una aplicación básica de Azure Cosmos DB for Table mediante Azure SDK para Java. Azure Cosmos DB for Table es un almacén de datos sin esquema que permite a las aplicaciones almacenar datos de tabla estructurados en la nube. Aprenderá a crear tablas y filas, y a realizar tareas básicas en el recurso de Azure Cosmos DB mediante el SDK de Azure para Java.

Documentación de referencia de la API | Código fuente de la biblioteca | Paquete (Maven) | Azure Developer CLI

Requisitos previos

  • CLI de desarrollo de Azure
  • Docker Desktop
  • Java 21

Antes de comenzar, si no tiene una cuenta de Azure, cree una gratuita.

Inicialización del proyecto

Use Azure Developer CLI (azd) para crear una cuenta de Azure Cosmos DB for Table e implementar una aplicación de ejemplo contenedorizada. La aplicación de ejemplo usa la biblioteca cliente para administrar, crear, leer y consultar datos de ejemplo.

  1. Abra un terminal en un directorio vacío.

  2. Si aún no está autenticado, autentíquese en Azure Developer CLI mediante azd auth login. Siga los pasos especificados por la herramienta para autenticarse en la CLI mediante sus credenciales de Azure preferidas.

    azd auth login
    
  3. Ejecute azd init para inicializar el proyecto.

    azd init --template cosmos-db-nosql-java-quickstart
    
  4. Durante la inicialización, configure un nombre de entorno único.

  5. Implemente la cuenta de Azure Cosmos DB mediante azd up. Las plantillas de Bicep también implementan una aplicación web de muestra.

    azd up
    
  6. Durante el proceso de aprovisionamiento, seleccione la suscripción, la ubicación deseada y el grupo de recursos de destino. Espere a que se complete el proceso de aprovisionamiento. El proceso puede tardar aproximadamente cinco minutos.

  7. Una vez realizado el aprovisionamiento de los recursos de Azure, se incluye una dirección URL a la aplicación web en ejecución en la salida.

    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. Use la dirección URL de la consola para ir a la aplicación web en el explorador. Observe la salida de la aplicación en ejecución.

Captura de pantalla de la aplicación web en ejecución.

Instalación de la biblioteca cliente

La biblioteca cliente está disponible a través de Maven, como paquete azure-spring-data-cosmos.

  1. Vaya a la carpeta /src/web y abra el archivo pom.xml.

  2. Si aún no existe, agregue una entrada para el paquete azure-spring-data-cosmos.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-spring-data-cosmos</artifactId>
    </dependency>
    
  3. Agregue también otra dependencia para el paquete azure-identity, si aún no existe.

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

Modelo de objetos

Nombre Descripción
EnableCosmosRepositories Este tipo es un decorador de método que sirve para configurar un repositorio para acceder a Azure Cosmos DB for NoSQL.
CosmosRepository Esta clase es la clase cliente principal y sirve para administrar datos dentro de un contenedor.
CosmosClientBuilder Esta clase es un generador que sirve para crear un cliente usado por el repositorio.
Query Este tipo es un decorador de método que sirve para especificar la consulta que ejecuta el repositorio.

Ejemplos de código

El código de ejemplo de la plantilla usa una base de datos denominada cosmicworks y un contenedor denominado products. El contenedor products contiene detalles como el nombre, la categoría, la cantidad, un identificador único y una marca de venta para cada producto. El contenedor usa la propiedad /category como clave de partición lógica.

Autenticar el cliente

En primer lugar, este ejemplo crea una clase que hereda de AbstractCosmosConfiguration para configurar la conexión a Azure Cosmos DB for NoSQL.

@Configuration
@EnableCosmosRepositories
public class CosmosConfiguration extends AbstractCosmosConfiguration {
}

Dentro de la clase de configuración, este ejemplo crea una instancia de la clase CosmosClientBuilder y configura la autenticación mediante una instancia DefaultAzureCredential.

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

Obtención de una base de datos

En la clase de configuración, el ejemplo implementa un método para devolver el nombre de la base de datos existente denominada cosmicworks.

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

Obtención de un contenedor

Use el decorador de método Container para configurar una clase para representar elementos en un contenedor. Cree la clase para incluir todos los miembros que desea serializar en JSON. En este ejemplo, el tipo tiene un identificador único y campos para categoría, nombre, cantidad, precio y autorización.

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

Crear un elemento

Cree un elemento en el contenedor mediante repository.save.

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

Lectura de un elemento

Se puede realizar una operación de lectura de punto mediante el identificador único (id) y los campos de clave de partición. Use repository.findById para recuperar de forma eficaz el elemento específico.

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
}

Elementos de consulta

Haga una consulta en varios elementos de un contenedor mediante la definición de una consulta en la interfaz del repositorio. En este ejemplo se usa el decorador de método Query para definir un método que ejecute esta consulta con parámetros:

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

}

Capture todos los resultados de la consulta mediante repository.getItemsByCategory. Recorra los resultados de la consulta.

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

Limpieza de recursos

Cuando ya no necesite la aplicación o los recursos de ejemplo, quite la implementación correspondiente y todos los recursos.

azd down