你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问
https://docs.azure.cn
。
快速入门:适用于 Java 的 Azure Cosmos DB for NoSQL 库
项目
08/16/2024
8 个参与者
开始使用适用于 Java 的 Azure Cosmos DB for NoSQL 客户端库来查询容器中的数据并对各个项执行常见操作。 请按照以下步骤,使用 Azure Developer CLI 将最小解决方案部署到环境。
API 参考文档
|
库源代码
|
包 (Maven)
|
Azure Developer CLI
具有活动订阅的 Azure 帐户。
免费创建帐户
。
GitHub 帐户
在项目的根目录中打开终端。
使用
azd auth login
向 Azure Developer CLI 进行身份验证。 按照该工具指定的步骤,使用首选 Azure 凭据向 CLI 进行身份验证。
azd auth login
使用 azd init
来初始化项目。
azd init --template cosmos-db-nosql-java-quickstart
本快速入门使用 azure-samples/cosmos-db-nosql-java-quickstart 模板 GitHub 存储库。 Azure Developer CLI 会自动将此项目克隆到计算机(如果其中尚不存在该项目)。
在初始化期间,配置唯一的环境名称。
环境名称也将用作目标资源组名称。 对于本快速入门,请考虑使用 msdocs-cosmos-db
。
使用 azd up
部署 Azure Cosmos DB 帐户。 Bicep 模板还部署示例 Web 应用程序。
azd up
在预配过程中,选择订阅和所需位置。 等待预配过程完成。 此过程可能需要大约 5 分钟 。
预配 Azure 资源后,输出中将包含指向正在运行的 Web 应用程序的 URL。
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.
使用控制台中的 URL 在浏览器中导航到 Web 应用程序。 观察正在运行的应用的输出。
模板中的示例代码使用名为 cosmicworks
的数据库和名为 products
的容器。 products
容器包含每个产品的名称、类别、数量、唯一标识符和销售标志等详细信息。 该容器使用 /category
属性作为逻辑分区键。
验证客户端
对大多数 Azure 服务的应用程序请求必须获得授权。 使用 DefaultAzureCredential
类型作为在应用程序和 Azure Cosmos DB for NoSQL 之间实现无密码连接的首选方式。 DefaultAzureCredential
支持多种身份验证方法,并确定应在运行时使用哪种方法。
还可以直接使用密码、连接字符串或其他凭据授权对 Azure 服务的请求。 但是,应谨慎使用此方法。 开发人员必须尽量避免在不安全的位置公开这些机密。 任何可获得密码或密钥的人员都可向数据库服务进行身份验证。 DefaultAzureCredential
提供比帐户密钥更好的管理和安全优势,允许无密码身份验证,而不会有存储密钥的风险。
首先,此示例创建了一个继承自 AbstractCosmosConfiguration
的新类,以配置与 Azure Cosmos DB for NoSQL 的连接。
@Configuration
@EnableCosmosRepositories
public class CosmosConfiguration extends AbstractCosmosConfiguration {
在配置类中,此示例创建 CosmosClientBuilder
类的新实例,并使用 DefaultAzureCredential
实例配置身份验证。
@Bean
public CosmosClientBuilder getCosmosClientBuilder() {
DefaultAzureCredential azureTokenCredential = new DefaultAzureCredentialBuilder()
.build();
return new CosmosClientBuilder()
.endpoint(uri)
.credential(azureTokenCredential);
获取数据库
在配置类中,示例实现了一个方法,用于返回名为 cosmicworks
的现有数据库的名称。
@Override
protected String getDatabaseName() {
return "cosmicworks";
使用 Container
方法修饰器来配置类以表示容器中的项。 创建类以包含要序列化为 JSON 的所有成员。 在此示例中,该类型具有唯一标识符以及用于类别、名称、数量、价格和清除的字段。
@Container(containerName = "products", autoCreateContainer = false)
public class Item {
private String id;
private String name;
private Integer quantity;
private Boolean sale;
@PartitionKey
private String category;
使用 repository.save
在容器中创建某个项。
Item item = new Item(
"70b63682-b93a-4c77-aad2-65501347265f",
"gear-surf-surfboards",
"Yamba Surfboard",
false
Item created_item = repository.save(item);
同时使用唯一标识符 (id
) 和分区键字段来执行点读取操作。 使用 repository.findById
以有效检索特定项。
PartitionKey partitionKey = new PartitionKey("gear-surf-surfboards");
Optional<Item> existing_item = repository.findById("70b63682-b93a-4c77-aad2-65501347265f", partitionKey);
if (existing_item.isPresent()) {
// Do something
通过在存储库的接口中定义一个查询,对容器中的多个项执行查询。 此示例使用 Query
方法修饰器来定义执行此参数化查询的方法:
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);
通过使用 repository.getItemsByCategory
提取查询的所有结果。 循环访问查询的结果。
List<Item> items = repository.getItemsByCategory("gear-surf-surfboards");
for (Item item : items) {
// Do something
.NET 快速入门
Node.js 快速入门
Java 快速入门
Go 快速入门
教程:生成 Java Web 应用