你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

TableServiceEntity 类

  • java.lang.Object
    • TableEntity
      • com.microsoft.azure.storage.table.TableServiceEntity

public class TableServiceEntity implements TableEntity

TableServiceEntity 表示存储服务中表实体的基对象类型。 TableServiceEntity 为 接口提供基实现 TableEntity ,该接口提供 和 方法,这些方法默认通过反射序列化和反序列化所有属性。 表实体类可以扩展此类并重写 和 方法,以提供自定义的或性能更高的序列化逻辑。

使用反射可以序列化和反序列化 的 TableServiceEntity 子类,而无需自行实现序列化代码。 当找到给定属性名称和数据类型的 getter 方法和 setter 方法时,将自动调用相应的方法来序列化或反序列化数据。 若要利用自动序列化代码,表实体类应为 Microsoft Azure 表存储中相应表实体中的每个属性提供 getter 和 setter 方法。 反射代码以成对的形式查找 getter 和 setter 方法

其中 PropertyName 是表实体的属性名称, type 是与属性的 EDM 数据类型兼容的 Java 类型。 有关属性类型到其 Java 等效项的映射,请参阅下表。 StoreAs可以使用 特性应用批注,以指定属性名称,以便在不遵循属性名称约定的 getter 和 setter 方法上反射。 方法名称和批注的 StoreAs 属性区分大小写,以便将属性名称与反射匹配。 Ignore使用 注释可防止反射使用方法进行自动序列化和反序列化。 请注意,名称“PartitionKey”、“RowKey”、“Timestamp”和“Etag”是保留的,如果使用子类中的 注释设置 StoreAs ,将忽略这些名称。

下表显示了 Microsoft Azure 存储中支持的属性数据类型,以及反序列化时对应的 Java 类型。

Microsoft Azure 存储中支持的属性数据类型

有关Microsoft Azure 存储服务中使用的表、实体和属性的概述,请参阅 MSDN 主题了解表服务数据模型

有关可用 EDM 基元数据类型和名称的概述,请参阅

OData 协议概述“基元数据类型”部分。

字段摘要

修饰符和类型 字段和描述
String etag

保留以供内部使用。 实体的 ETag 的值。

String partitionKey

保留以供内部使用。 实体中分区键的值。

String rowKey

保留以供内部使用。 实体中行键的值。

Date timeStamp

保留以供内部使用。 实体中时间戳的值。

构造函数摘要

构造函数 说明
TableServiceEntity()

初始化空 TableServiceEntity 实例。

TableServiceEntity(String partitionKey, String rowKey)

使用指定的分区键和行键初始化 TableServiceEntity 类的新实例。

方法摘要

修饰符和类型 方法和描述
String getEtag()

获取要验证实体的 ETag 值。 此值用于确定表实体自上次从 Microsoft Azure 存储读取以来是否已更改。 客户端无法在服务上更新此值。

String getPartitionKey()

获取实体的 PartitionKey 值。

ConcurrentHashMap<Class<?>, HashMap<String, PropertyPair>> getReflectedEntityCache()

反序列化实体且有效负载不包含 JSON 元数据时,反射的实体缓存将缓存已知的实体类型及其各自的反射实体字典。

String getRowKey()

获取实体的 RowKey 值。

Date getTimestamp()

获取实体的时间戳。 服务器将管理 Timestamp 的值,该值不可修改。

boolean isReflectedEntityCacheDisabled()

获取一个值,该值指示是否禁用反射的实体缓存。 在大多数情况下,不建议禁用反射的实体缓存,因为它会影响性能。

反射的实体缓存存储已知的实体类型及其各自的反射实体字典。 而不是对已知实体类型使用反射,而是使用字典中的值。

void readEntity(final HashMap<String, EntityProperty> properties, final OperationContext opContext)

使用属性名称到 EntityProperty 数据类型值的映射填充此表实体实例。

此方法调用 readEntityWithReflection(final Object instance, final HashMap<String, EntityProperty> properties, final OperationContext opContext) 以填充使用反射调用该方法的表实体实例。 扩展 TableServiceEntity 的表实体类可以通过为类所表示的 Microsoft Azure 存储中表实体的特定属性实现 getter 和 setter 方法来利用此行为。

在扩展 TableServiceEntity 为调用自定义序列化代码的类中重写此方法。

void readEntityWithReflection(final Object instance, final HashMap<String, EntityProperty> properties, final OperationContext opContext)

使用反射将表实体属性映射反序列化为指定的对象实例。

此静态方法采用表示表实体类型的对象实例,并使用对其类类型的反射来查找方法,以将数据从属性映射反序列化到实例中。

属性映射中的每个属性名称和数据类型都与类类型中的方法进行比较,以便对用于序列化和反序列化的 getter 和 setter 方法。 将扫描 类,以查找名称与属性名称匹配的方法,这些属性名称前面附加了“get”和“set”,或者带有属性名称的 StoreAs 批注集。 方法必须具有与相应 EntityProperty 值的数据类型匹配的返回类型或参数数据类型。 如果找到此类对,则通过在实例上调用 setter 方法将数据复制到实例对象中。 不会复制按名称和数据类型与方法对不匹配的属性。

void setEtag(final String etag)

设置要验证实体的 ETag 值。 此值用于确定表实体自上次从 Microsoft Azure 存储读取以来是否已更改。 客户端无法在服务上更新此值。

void setPartitionKey(final String partitionKey)

设置实体的 PartitionKey 值。

void setReflectedEntityCacheDisabled(boolean disableReflectedEntityCache)

设置一个布尔值,该值表示是否禁用反射的实体缓存。 在大多数情况下,不建议禁用反射的实体缓存,因为它会影响性能。

反射实体缓存存储已知实体类型及其各自的反射实体字典。 而不是对已知实体类型使用反射,而是使用字典中的值。

void setRowKey(final String rowKey)

设置实体的 RowKey 值。

void setTimestamp(final Date timeStamp)

设置实体的值。 请注意,timestamp 属性是只读属性,仅由服务设置。

HashMap<String, EntityProperty> writeEntity(final OperationContext opContext)

返回属性名称到 EntityProperty 通过序列化此表实体实例创建的数据类型值的映射。

此方法调用 writeEntityWithReflection(final Object instance) 以序列化使用反射调用该方法的表实体实例。 扩展 TableServiceEntity 的表实体类可以通过为类所表示的 Microsoft Azure 存储中表实体的特定属性实现 getter 和 setter 方法来利用此行为。 请注意,属性名称“PartitionKey”、“RowKey”和“Timestamp”是保留的,如果在具有 StoreAs 批注的其他方法上设置,则会被忽略。

在扩展 TableServiceEntity 为调用自定义序列化代码的类中重写此方法。

HashMap<String, EntityProperty> writeEntityWithReflection(final Object instance)

使用反射将表实体实例中的属性数据序列化为属性映射。

此静态方法采用表示表实体类型的对象实例,并使用对其类类型的反射来查找方法,以将数据从实例序列化为属性映射。

属性映射中的每个属性名称和数据类型都与类类型中的方法进行比较,以便对用于序列化和反序列化的 getter 和 setter 方法。 将扫描 类,以查找名称与属性名称匹配的方法,这些属性名称前面附加了“get”和“set”,或者带有属性名称的 StoreAs 批注集。 方法必须具有与相应 EntityProperty 值的数据类型匹配的返回类型或参数数据类型。 如果找到此类对,则通过在实例上调用 getter 方法,从实例对象复制数据。 不会复制没有具有匹配名称和数据类型的方法对的属性。

字段详细信息

etag

protected String etag= null

保留以供内部使用。 实体的 ETag 的值。

partitionKey

protected String partitionKey= null

保留以供内部使用。 实体中分区键的值。

rowKey

protected String rowKey= null

保留以供内部使用。 实体中行键的值。

timeStamp

protected Date timeStamp= new Date()

保留以供内部使用。 实体中时间戳的值。

构造函数详细信息

TableServiceEntity

public TableServiceEntity()

初始化空 TableServiceEntity 实例。

TableServiceEntity

public TableServiceEntity(String partitionKey, String rowKey)

使用指定的分区键和行键初始化 TableServiceEntity 类的新实例。

Parameters:

partitionKey - 一个 String ,它表示要初始化的 的 TableServiceEntity 分区键。
rowKey - 一个 String ,它表示要初始化的 的 TableServiceEntity 行键。

方法详细信息

getEtag

public String getEtag()

获取要验证实体的 ETag 值。 此值用于确定表实体自上次从 Microsoft Azure 存储读取以来是否已更改。 客户端无法在服务上更新此值。

Overrides:

TableServiceEntity.getEtag()

Returns:

包含 String 实体的 ETag 的 。

getPartitionKey

public String getPartitionKey()

获取实体的 PartitionKey 值。

Overrides:

TableServiceEntity.getPartitionKey()

Returns:

一个 String ,包含实体的 PartitionKey 值。

getReflectedEntityCache

protected static ConcurrentHashMap, HashMap> getReflectedEntityCache()

反序列化实体且有效负载不包含 JSON 元数据时,反射的实体缓存将缓存已知的实体类型及其各自的反射实体字典。

Returns:

表示 ConcurrentHashMap<Class<?>, HashMap<String, PropertyPair>> 已知实体类型及其反射实体字典的

getRowKey

public String getRowKey()

获取实体的 RowKey 值。

Overrides:

TableServiceEntity.getRowKey()

Returns:

一个 String ,包含实体的 RowKey 值。

getTimestamp

public Date getTimestamp()

获取实体的时间戳。 服务器将管理 Timestamp 的值,该值不可修改。

Overrides:

TableServiceEntity.getTimestamp()

Returns:

一个 java.util.Date 对象,表示实体的 Timestamp 值。

isReflectedEntityCacheDisabled

public static boolean isReflectedEntityCacheDisabled()

获取一个值,该值指示是否禁用反射的实体缓存。 在大多数情况下,不建议禁用反射的实体缓存,因为它会影响性能。

反射的实体缓存存储已知的实体类型及其各自的反射实体字典。 而不是对已知实体类型使用反射,而是使用字典中的值。

Returns:

true 如果已禁用反射的实体缓存,则为 ;否则为 false

readEntity

public void readEntity(final HashMap properties, final OperationContext opContext)

使用属性名称到 EntityProperty 数据类型值的映射填充此表实体实例。

此方法调用 readEntityWithReflection(final Object instance, final HashMap<String, EntityProperty> properties, final OperationContext opContext) 以填充使用反射调用该方法的表实体实例。 扩展 TableServiceEntity 的表实体类可以通过为类所表示的 Microsoft Azure 存储中表实体的特定属性实现 getter 和 setter 方法来利用此行为。

在扩展 TableServiceEntity 为调用自定义序列化代码的类中重写此方法。

Overrides:

TableServiceEntity.readEntity(final HashMap<String, EntityProperty> properties, final OperationContext opContext)

Parameters:

properties - java.util.HashMapString要反序列化并存储在此表实体实例中的数据值的属性名称EntityProperty的 。
opContext - 一个 OperationContext 对象,用于跟踪操作的执行。

Throws:

StorageException - 如果反序列化期间发生错误,则为 。

readEntityWithReflection

public static void readEntityWithReflection(final Object instance, final HashMap properties, final OperationContext opContext)

使用反射将表实体属性映射反序列化为指定的对象实例。

此静态方法采用表示表实体类型的对象实例,并使用对其类类型的反射来查找方法,以将数据从属性映射反序列化到实例中。

属性映射中的每个属性名称和数据类型都与类类型中的方法进行比较,以便对用于序列化和反序列化的 getter 和 setter 方法。 将扫描 类,以查找名称与属性名称匹配的方法,这些属性名称前面附加了“get”和“set”,或者带有属性名称的 StoreAs 批注集。 方法必须具有与相应 EntityProperty 值的数据类型匹配的返回类型或参数数据类型。 如果找到此类对,则通过在实例上调用 setter 方法将数据复制到实例对象中。 不会复制按名称和数据类型与方法对不匹配的属性。

Parameters:

instance - 对 Object 类实例的引用,该 TableEntity 类实现将表实体数据反序列化到其中。
properties - 一个 java.util.HashMap 对象,该对象将属性名称映射到StringEntityProperty包含要反序列化为实例参数对象的类型化数据值的对象。
opContext - 一个 OperationContext 对象,它一个表示当前操作的上下文。

Throws:

IllegalArgumentException - 如果收到的表实体响应无效或格式不正确,则为 。
IllegalAccessException - 如果表实体在反序列化期间引发异常,则为 。
InvocationTargetException - 如果对实例参数调用的方法在反序列化期间引发异常,则为 。

setEtag

public void setEtag(final String etag)

设置要验证实体的 ETag 值。 此值用于确定表实体自上次从 Microsoft Azure 存储读取以来是否已更改。 客户端无法在服务上更新此值。

Overrides:

TableServiceEntity.setEtag(final String etag)

Parameters:

etag - 一个 String 包含实体的 ETag 的 。

setPartitionKey

public void setPartitionKey(final String partitionKey)

设置实体的 PartitionKey 值。

Overrides:

TableServiceEntity.setPartitionKey(final String partitionKey)

Parameters:

partitionKey - 包含 String 实体的 PartitionKey 值的 。

setReflectedEntityCacheDisabled

public static void setReflectedEntityCacheDisabled(boolean disableReflectedEntityCache)

设置一个布尔值,该值表示是否禁用反射的实体缓存。 在大多数情况下,不建议禁用反射的实体缓存,因为它会影响性能。

反射实体缓存存储已知实体类型及其各自的反射实体字典。 而不是对已知实体类型使用反射,而是使用字典中的值。

Parameters:

disableReflectedEntityCache -

true 如果禁用反射的实体缓存,则为 ;否则为 false

setRowKey

public void setRowKey(final String rowKey)

设置实体的 RowKey 值。

Overrides:

TableServiceEntity.setRowKey(final String rowKey)

Parameters:

rowKey - 包含 String 实体的 RowKey 值的 。

setTimestamp

public void setTimestamp(final Date timeStamp)

设置实体的值。 请注意,timestamp 属性是只读属性,仅由服务设置。

Overrides:

TableServiceEntity.setTimestamp(final Date timeStamp)

Parameters:

timeStamp - 一个 java.util.Date ,它包含 timeStamp 实体的值。

writeEntity

public HashMap writeEntity(final OperationContext opContext)

返回属性名称到 EntityProperty 通过序列化此表实体实例创建的数据类型值的映射。

此方法调用 writeEntityWithReflection(final Object instance) 以序列化使用反射调用该方法的表实体实例。 扩展 TableServiceEntity 的表实体类可以通过为类所表示的 Microsoft Azure 存储中表实体的特定属性实现 getter 和 setter 方法来利用此行为。 请注意,属性名称“PartitionKey”、“RowKey”和“Timestamp”是保留的,如果在具有 StoreAs 批注的其他方法上设置,则会被忽略。

在扩展 TableServiceEntity 为调用自定义序列化代码的类中重写此方法。

Overrides:

TableServiceEntity.writeEntity(final OperationContext opContext)

Parameters:

opContext - 一个 OperationContext 对象,用于跟踪操作的执行。

Returns:

一个 java.util.HashMap ,属性 String 名称为 EntityProperty 数据类型值,表示从此表实体实例序列化的属性。

Throws:

StorageException - 如果在序列化期间发生错误,则为 。

writeEntityWithReflection

public static HashMap writeEntityWithReflection(final Object instance)

使用反射将表实体实例中的属性数据序列化为属性映射。

此静态方法采用表示表实体类型的对象实例,并使用对其类类型的反射来查找方法,以将数据从实例序列化为属性映射。

属性映射中的每个属性名称和数据类型都与类类型中的方法进行比较,以便对用于序列化和反序列化的 getter 和 setter 方法。 将扫描 类,以查找名称与属性名称匹配的方法,这些属性名称前面附加了“get”和“set”,或者带有属性名称的 StoreAs 批注集。 方法必须具有与相应 EntityProperty 值的数据类型匹配的返回类型或参数数据类型。 如果找到此类对,则通过在实例上调用 getter 方法,从实例对象复制数据。 不会复制没有具有匹配名称和数据类型的方法对的属性。

Parameters:

instance - 对 Object 类实例的引用,该 TableEntity 类实现从中序列化表实体数据。

Returns:

一个 java.util.HashMap 对象,该对象将属性名称映射到StringEntityProperty包含从实例参数对象序列化的类型化数据值的对象。

Throws:

IllegalArgumentException - 如果表实体无效或格式不正确,则为 。
IllegalAccessException - 如果表实体在序列化期间引发异常,则为 。
InvocationTargetException - 如果在实例参数上调用的方法在序列化期间引发异常,则为 。

适用于