0

我有存储在 HBase 和 PostgreSQL 中的域对象。

在定义类时,用于 PostgreSQL 的注解不适用于 HBase,所以我最终定义了两个具有相同属性但注解不同的类。我使用 Hibernate/Spring 框架。

对于 PostgreSQL,我使用的域类如下:(片段)

@Entity
@Table(name="foo_bar")
public class FooBarPgsql implements Serializable {
    private static final long serialVersionUID = 5848293352035620189L;

    @Id
    @Column(name="id")
    String id;

    @Column(name="name")
    String name;
}

对于 HBase,类是:

public class FooBarHbase {
    String id;
    String name;
}

那么,如果我必须为 PostgreSQL 和 HBase 使用一个类,我应该如何定义这个类?

4

1 回答 1

0

我认为您的组合类将比具有公共接口的两个类更复杂(可以根据需要分派)。数据库是如此不同,HBase 与 ORM 方法并不真正兼容。

我认为,与尝试完全合并类相比,仔细使用组合之类的东西会更划算。由于 Java 可以动态更改类属性,因此尝试以这种方式集中代码更有可能允许您使用一组干净的类来委派实际的数据库处理。

如果您真的想要,您可能可以这样做,但我不确定在代码质量方面肯定会花费的成本是否值得。让细节取决于接口,而不是相反。

于 2013-05-21T03:46:15.297 回答