你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
TableServiceEntity 类
- java.
lang. Object - TableEntity
- com.
microsoft. azure. storage. table. TableServiceEntity
- com.
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 存储服务中使用的表、实体和属性的概述,请参阅 MSDN 主题了解表服务数据模型。
有关可用 EDM 基元数据类型和名称的概述,请参阅
字段摘要
修饰符和类型 | 字段和描述 |
---|---|
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, Entity |
writeEntity(final OperationContext opContext)
返回属性名称到 EntityProperty 通过序列化此表实体实例创建的数据类型值的映射。 此方法调用 writeEntityWithReflection(final Object instance) 以序列化使用反射调用该方法的表实体实例。 扩展 TableServiceEntity 的表实体类可以通过为类所表示的 Microsoft Azure 存储中表实体的特定属性实现 getter 和 setter 方法来利用此行为。 请注意,属性名称“PartitionKey”、“RowKey”和“Timestamp”是保留的,如果在具有 StoreAs 批注的其他方法上设置,则会被忽略。 在扩展 TableServiceEntity 为调用自定义序列化代码的类中重写此方法。 |
HashMap<String, Entity |
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:
方法详细信息
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
反序列化实体且有效负载不包含 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
使用属性名称到 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:
Throws:
readEntityWithReflection
public static void readEntityWithReflection(final Object instance, final HashMap
使用反射将表实体属性映射反序列化为指定的对象实例。
此静态方法采用表示表实体类型的对象实例,并使用对其类类型的反射来查找方法,以将数据从属性映射反序列化到实例中。
属性映射中的每个属性名称和数据类型都与类类型中的方法进行比较,以便对用于序列化和反序列化的 getter 和 setter 方法。 将扫描 类,以查找名称与属性名称匹配的方法,这些属性名称前面附加了“get”和“set”,或者带有属性名称的 StoreAs 批注集。 方法必须具有与相应 EntityProperty 值的数据类型匹配的返回类型或参数数据类型。 如果找到此类对,则通过在实例上调用 setter 方法将数据复制到实例对象中。 不会复制按名称和数据类型与方法对不匹配的属性。
Parameters:
Throws:
setEtag
public void setEtag(final String etag)
设置要验证实体的 ETag 值。 此值用于确定表实体自上次从 Microsoft Azure 存储读取以来是否已更改。 客户端无法在服务上更新此值。
Overrides:
TableServiceEntity.setEtag(final String etag)Parameters:
String
包含实体的 ETag 的 。
setPartitionKey
public void setPartitionKey(final String partitionKey)
设置实体的 PartitionKey 值。
Overrides:
TableServiceEntity.setPartitionKey(final String partitionKey)Parameters:
String
实体的 PartitionKey 值的 。
setReflectedEntityCacheDisabled
public static void setReflectedEntityCacheDisabled(boolean disableReflectedEntityCache)
设置一个布尔值,该值表示是否禁用反射的实体缓存。 在大多数情况下,不建议禁用反射的实体缓存,因为它会影响性能。
反射实体缓存存储已知实体类型及其各自的反射实体字典。 而不是对已知实体类型使用反射,而是使用字典中的值。
Parameters:
true
如果禁用反射的实体缓存,则为 ;否则为 false
。
setRowKey
public void setRowKey(final String rowKey)
设置实体的 RowKey 值。
Overrides:
TableServiceEntity.setRowKey(final String rowKey)Parameters:
String
实体的 RowKey 值的 。
setTimestamp
public void setTimestamp(final Date timeStamp)
设置实体的值。 请注意,timestamp 属性是只读属性,仅由服务设置。
Overrides:
TableServiceEntity.setTimestamp(final Date timeStamp)Parameters:
java.util.Date
,它包含 timeStamp
实体的值。
writeEntity
public HashMap
返回属性名称到 EntityProperty 通过序列化此表实体实例创建的数据类型值的映射。
此方法调用 writeEntityWithReflection(final Object instance) 以序列化使用反射调用该方法的表实体实例。 扩展 TableServiceEntity 的表实体类可以通过为类所表示的 Microsoft Azure 存储中表实体的特定属性实现 getter 和 setter 方法来利用此行为。 请注意,属性名称“PartitionKey”、“RowKey”和“Timestamp”是保留的,如果在具有 StoreAs 批注的其他方法上设置,则会被忽略。
在扩展 TableServiceEntity 为调用自定义序列化代码的类中重写此方法。
Overrides:
TableServiceEntity.writeEntity(final OperationContext opContext)Parameters:
Returns:
Throws:
writeEntityWithReflection
public static HashMap
使用反射将表实体实例中的属性数据序列化为属性映射。
此静态方法采用表示表实体类型的对象实例,并使用对其类类型的反射来查找方法,以将数据从实例序列化为属性映射。
属性映射中的每个属性名称和数据类型都与类类型中的方法进行比较,以便对用于序列化和反序列化的 getter 和 setter 方法。 将扫描 类,以查找名称与属性名称匹配的方法,这些属性名称前面附加了“get”和“set”,或者带有属性名称的 StoreAs 批注集。 方法必须具有与相应 EntityProperty 值的数据类型匹配的返回类型或参数数据类型。 如果找到此类对,则通过在实例上调用 getter 方法,从实例对象复制数据。 不会复制没有具有匹配名称和数据类型的方法对的属性。
Parameters:
Returns:
Throws: