0

HBase と PostgreSQL の両方に格納されているドメイン オブジェクトがあります。

クラスを定義する際、PostgreSQL で使用されるアノテーションは HBase には適用されないため、プロパティは同じでアノテーションが異なる 2 つのクラスを定義することになります。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 の両方に 1 つのクラスを使用する必要がある場合、クラスをどのように定義すればよいでしょうか?

4

1 に答える 1

0

結合されたクラスは、共通のインターフェースを持つ2つのクラスよりも複雑になると思います(必要に応じてディスパッチできます)。データベースはまったく異なり、HBase は ORM アプローチと実際には互換性がありません。

クラスを完全にマージしようとするよりも、コンポジションなどを慎重に使用することで、より多くの価値が得られると思います。Java はクラス プロパティを動的に変更できるため、この方法でコードを集中化しようとすると、実際のデータベース処理を委譲するためのクリーンなクラス セットが可能になる可能性が高くなります。

本当に必要な場合は、おそらくこれを行うことができますが、コードの品質に関して確実にかかるコストの点で、それだけの価値があるかどうかはわかりません. 詳細はインターフェースに依存させ、その逆ではありません。

于 2013-05-21T03:46:15.297 に答える