8

Android で ORMLite を使用していますが、次の質問があります。単一の Java クラスに基づいて多数のテーブルを作成することは可能ですか?

テーブルは名前のみが異なる必要があり、テーブルへのアクセスは名前で行う必要があります。

たとえば、クラスがある場合:

public class Order{
    @DatabaseField
    public string Name;

    @DatabaseField
    public string Amount;
}

そして、注文を作成できる動的な数のモジュールがあります。すべてのモジュールに独自のテーブルを持たせたいのですが、すべてのテーブルは同様のスキーマを持つ必要があります。

ソースモジュール名を示す Order クラスにフィールドを追加し、すべての注文を 1 つのテーブルに保存できることはわかっていますが、テーブルを分離する方法があるかどうか疑問に思っていました (クエリを高速化し、注文を削除するのを高速化するため)。同じモジュールなど)

ありがとう!

4

1 に答える 1

12

ここでの大きな問題は、「動的」とは何を意味するのかということです。これらのモジュールをその場で作成する必要がありOrder、その名前を事前に知らない場合は、モジュール名フィールドがこれを行う効率的な方法であると思います。注文の種類ごとにテーブルを作成することは、時期尚早の最適化のように思えます。正当な理由のない複雑さです。

DatabaseTableConfigつまり、 for each テーブルをインスタンス化し、プログラムでクラスを定義することにより、動的クラスを実現できます。

動的という意味ではない場合、各モジュールOrderを独自のテーブルに配置する最も簡単な方法は、サブクラスを使用することです。

あなたが持つことができます:

@DatabaseTable
public class FooOrder extends Order {
    // fields will be gotten from Order
}

@DatabaseTable
public class BarOrder extends Order {
    // fields will be gotten from Order
}

からのフィールドは、およびテーブルOrderのそれぞれにあります。fooorderbarorder

于 2012-08-20T13:51:39.520 に答える