我有一个在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。