如何使用适用于java servlet的Azure表存储sdk以正确的方式进行编码

时间:2016-07-13 04:47:42

标签: java azure azure-storage azure-table-storage azure-java-sdk

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

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

所以这是我的问题,在实现Azure Storage 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;
        }

    }

}

并使用like

AzureTableStorage.getEntity(rowKey);

这是个坏主意吗?

请有人给我一些答案吗?

BTW我已经看过了,

Java Static vs Instance

Java: when to use static methods

但仍然无法找到答案。

1 个答案:

答案 0 :(得分:0)

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

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

GitHub上有一些官方样本作为我认为您可以参考的最佳做法,请参阅https://github.com/Azure/azure-storage-java/tree/master/microsoft-azure-storage-samples/src/com/microsoft/azure/storage/tablehttps://github.com/Azure-Samples/storage-table-java-getting-started