如何使用适用于 Java Servlet 的 Azure 表存储 SDK 以正确的方式编码



我有一个在Azure App Service上运行的Servlet(Jersey2 + Jax-rs)API应用程序。

此 API 从 Azure 表存储检索数据并发送回客户端。

因此,这是我的问题,在"静态方法"和"实例"之间哪个是实现 Azure 存储 SDK 的更好选择。

例如,我的代码是这样的,

public class AzureTableStorage {
    private static final String storageConnectionString = "DefaultEndpointsProtocol=http;" + "AccountName=;"
            + "AccountKey=";
    public static CloudTable getTable() {
        try {
            CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
            CloudTableClient tableClient = storageAccount.createCloudTableClient();
            CloudTable cloudTable = tableClient.getTableReference("");
            return cloudTable;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public static Entity getEntity(String rowKey) {
        // TODO Auto-generated method stub
        try {

            TableOperation operation = TableOperation.retrieve("", "", xxx.class);

            Entity entity = AzureTableStorage.getTable().execute(operation).getResultAsType();
            // Output the entity.
            return entity;
        } catch (Exception e) {
            // Output the stack trace.
            e.printStackTrace();
            return null;
        }
    }
}

并使用类似

AzureTableStorage.getEntity(rowKey);

这是个坏主意吗?

请问谁能给我一些答案?

顺便说一句,我已经看过了,

Java 静态与实例

Java:何时使用静态方法

但还是找不到。

根据我的经验,我认为使用 Azure 表存储的设计模式与 RDBMS 的 ORM 非常相似,但似乎不再需要考虑性能优化,因为 Azure Java SDK 包装了相关的 REST API。

所以在我看来,在某些情况下,使用单例模式来声明static对象以进行CloudClient,例如批处理任务或计划任务。并创建一个容器作为池来控制CloudClient对象的数量,并从池中获取一个Client实例,以通过用户会话执行操作,包括创建,读取,更新和删除。

GitHub 上有一些官方示例作为最佳实践,我认为您可以参考,请参阅 https://github.com/Azure/azure-storage-java/tree/master/microsoft-azure-storage-samples/src/com/microsoft/azure/storage/table 和 https://github.com/Azure-Samples/storage-table-java-getting-started。

相关内容

  • 没有找到相关文章

最新更新