simplehbase对JOPO新增xml配置和无配置方式
幸乐湛
2023-12-01
simplehbase介绍文章如下:
[url]https://github.com/zhang-xzhi/simplehbase/wiki/C00-simplehbase-3%E5%88%86%E9%92%9F%E7%AE%80%E4%BB%8B[/url]
github
[url]https://github.com/zhang-xzhi/simplehbase/[/url]
[url]https://github.com/zhang-xzhi/simplehbase/wiki[/url]
Data Object需要被simpleHbase识别,目前有3种方式来配置JOPO方式。
simplehbase在v0.9(包含v0.9)之前对于POJO的配置,只支持annotation的形式。
## annotation的方式
HBaseTable标记DO类型。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface HBaseTable {
/**
* Default family name.
*
* @return default family.
*/
public String defaultFamily() default "";
}
HBaseColumn标记DO类型中的属性。
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface HBaseColumn {
/**
* Family name.
*
* @return family.
*/
public String family() default "";
/**
* Qualifier name.
*
* @return qualifier.
*/
public String qualifier();
}
## xml配置方式
xml配置方式如下:在ConfigResource增加如下xml配置。
<MappingType className="com.alipay.simplehbase.myrecord.MyRecordV3" defaultFamily="MyRecordFamily">
<field name="id" qualifier="id" family="MyRecordFamily"
isVersioned="false" />
<field name="name" qualifier="name" />
<field name="age" />
<field name="date" />
<field name="gender" />
</MappingType>
其中
MappingType中
className必填,对应JOPO的classname。
defaultFamily选填。
field中
name必填,对应于JOPO的field name。
qualifier选填,无值时,qualifier为name。
family选填,无值时,使用defaultFamily,defaultFamily为空时,使用qualifier查找对应的family,需要在配置的HTable中,该列名只能在唯一的列簇下。
isVersioned选填,true时表示isVersioned,其他情况为false。
## 无配置方式
有如下2个注意点。
* JOPO中的static field不解析为htable对应的列信息。
* 对于每一个field,对应HTable的列名,在配置的HTable中,该列名只能在唯一的列簇下。
## 3种解析方式的优先级
* 1 xml config方式。
* 2 annotation方式。
* 3 无配置方式。