Skip to content

Latest commit

 

History

History
211 lines (145 loc) · 8.87 KB

create-table-java.md

File metadata and controls

211 lines (145 loc) · 8.87 KB
title description author ms.service ms.subservice ms.devlang ms.topic ms.date ms.author ms.custom
Use the Table API and Java to build an app - Azure Cosmos DB
This quickstart shows how to use the Azure Cosmos DB Table API to create an application with the Azure portal and Java
SnehaGunda
cosmos-db
cosmosdb-table
java
quickstart
05/28/2020
sngun
seo-java-august2019, seo-java-september2019, devx-track-java

Quickstart: Build a Java app to manage Azure Cosmos DB Table API data

[!div class="op_single_selector"]

In this quickstart, you create an Azure Cosmos DB Table API account, and use Data Explorer and a Java app cloned from GitHub to create tables and entities. Azure Cosmos DB is a multi-model database service that lets you quickly create and query document, table, key-value, and graph databases with global distribution and horizontal scale capabilities.

Prerequisites

Create a database account

Important

You need to create a new Table API account to work with the generally available Table API SDKs. Table API accounts created during preview are not supported by the generally available SDKs.

[!INCLUDE cosmos-db-create-dbaccount-table]

Add a table

[!INCLUDE cosmos-db-create-table]

Add sample data

[!INCLUDE cosmos-db-create-table-add-sample-data]

Clone the sample application

Now let's clone a Table app from GitHub, set the connection string, and run it. You'll see how easy it is to work with data programmatically.

  1. Open a command prompt, create a new folder named git-samples, then close the command prompt.

    md "C:\git-samples"
  2. Open a git terminal window, such as git bash, and use the cd command to change to the new folder to install the sample app.

    cd "C:\git-samples"
  3. Run the following command to clone the sample repository. This command creates a copy of the sample app on your computer.

    git clone https://github.com/Azure-Samples/storage-table-java-getting-started.git 

Tip

For a more detailed walkthrough of similar code, see the Cosmos DB Table API sample article.

Review the code

This step is optional. If you're interested in learning how the database resources are created in the code, you can review the following snippets. Otherwise, you can skip ahead to update the connection string section of this doc.

  • The following code shows how to create a table within the Azure Storage:

    private static CloudTable createTable(CloudTableClient tableClient, String tableName) throws StorageException, RuntimeException, IOException, InvalidKeyException,   IllegalArgumentException, URISyntaxException, IllegalStateException {
    
      // Create a new table
      CloudTable table = tableClient.getTableReference(tableName);
      try {
          if (table.createIfNotExists() == false) {
              throw new IllegalStateException(String.format("Table with name \"%s\" already exists.", tableName));
          }
      }
      catch (StorageException s) {
          if (s.getCause() instanceof java.net.ConnectException) {
              System.out.println("Caught connection exception from the client. If running with the default configuration please make sure you have started the storage emulator.");
          }
          throw s;
      }
    
      return table;
    }
  • The following code shows how to insert data into the table:

    private static void batchInsertOfCustomerEntities(CloudTable table) throws StorageException {
    
    // Create the batch operation
    TableBatchOperation batchOperation1 = new TableBatchOperation();
    for (int i = 1; i <= 50; i++) {
        CustomerEntity entity = new CustomerEntity("Smith", String.format("%04d", i));
        entity.setEmail(String.format("smith%04d@contoso.com", i));
        entity.setHomePhoneNumber(String.format("425-555-%04d", i));
        entity.setWorkPhoneNumber(String.format("425-556-%04d", i));
        batchOperation1.insertOrMerge(entity);
    }
    
    // Execute the batch operation
    table.execute(batchOperation1);
    }
  • The following code shows how to query data from the table:

    private static void partitionScan(CloudTable table, String partitionKey) throws StorageException {
    
        // Create the partition scan query
        TableQuery<CustomerEntity> partitionScanQuery = TableQuery.from(CustomerEntity.class).where(
            (TableQuery.generateFilterCondition("PartitionKey", QueryComparisons.EQUAL, partitionKey)));
    
        // Iterate through the results
        for (CustomerEntity entity : table.execute(partitionScanQuery)) {
            System.out.println(String.format("\tCustomer: %s,%s\t%s\t%s\t%s", entity.getPartitionKey(), entity.getRowKey(), entity.getEmail(), entity.getHomePhoneNumber(), entity.  getWorkPhoneNumber()));
        }
    }
  • The following code shows how to delete data from the table:

    System.out.print("\nDelete any tables that were created.");
    
    if (table1 != null && table1.deleteIfExists() == true) {
        System.out.println(String.format("\tSuccessfully deleted the table: %s", table1.getName()));
    }
    
    if (table2 != null && table2.deleteIfExists() == true) {
        System.out.println(String.format("\tSuccessfully deleted the table: %s", table2.getName()));
    }

Update your connection string

Now go back to the Azure portal to get your connection string information and copy it into the app. This enables your app to communicate with your hosted database.

  1. In your Azure Cosmos DB account in the Azure portal, select Connection String.

    :::image type="content" source="./media/create-table-java/cosmos-db-quickstart-connection-string.png" alt-text="View the connection string information in the Connection String pane":::

  2. Copy the PRIMARY CONNECTION STRING using the copy button on the right.

  3. Open config.properties from the C:\git-samples\storage-table-java-getting-started\src\main\resources folder.

  4. Comment out line one and uncomment line two. The first two lines should now look like this.

    #StorageConnectionString = UseDevelopmentStorage=true
    StorageConnectionString = DefaultEndpointsProtocol=https;AccountName=[ACCOUNTNAME];AccountKey=[ACCOUNTKEY]
  5. Paste your PRIMARY CONNECTION STRING from the portal into the StorageConnectionString value in line 2.

    [!IMPORTANT] If your Endpoint uses documents.azure.com, that means you have a preview account, and you need to create a new Table API account to work with the generally available Table API SDK.

  6. Save the config.properties file.

You've now updated your app with all the info it needs to communicate with Azure Cosmos DB.

Run the app

  1. In the git terminal window, cd to the storage-table-java-getting-started folder.

    cd "C:\git-samples\storage-table-java-getting-started"
    
  2. In the git terminal window, run the following commands to run the Java application.

    mvn compile exec:java 
    

    The console window displays the table data being added to the new table database in Azure Cosmos DB.

    You can now go back to Data Explorer and see, query, modify, and work with this new data.

Review SLAs in the Azure portal

[!INCLUDE cosmosdb-tutorial-review-slas]

Clean up resources

[!INCLUDE cosmosdb-delete-resource-group]

Next steps

In this quickstart, you learned how to create an Azure Cosmos DB account, create a table using the Data Explorer, and run a Java app to add table data. Now you can query your data using the Table API.

[!div class="nextstepaction"] Import table data to the Table API