1

perl のバックグラウンドから来て、その中でいくつかの簡単な OO を行ったので、データベースとやり取りする Android/Java の方法を把握するのに苦労しています。

私の経験では、オブジェクトごとにファイルまたはクラスを作成し、オブジェクトはデータベース内のテーブルと一致/表します。

そのオブジェクト内には、コンストラクター、データの変数、個々の変数を返すメソッド/関数だけでなく、必要なすべての CRUD 関数を実行して DB から読み書きする DB クエリもあります。

私が Web で読んだことから、Android では同様にオブジェクトを作成しますが、DB の相互作用はありません。これは、すべての DB 機能を含む単一のクラス、またはテーブルごとに 1 つの複数の DB クラスで発生します。

私の質問はすべて、ベスト プラクティスに関するものです。

Perl で行うようにアプリを実行できますか? そうでない場合、そうでない場合、長所と短所、および制限は何ですか?

DAO、Adapter、POJO という用語は何を意味しますか?

アプリケーション クラスを作成し、そこで DB をグローバルに宣言する必要がありますか?

各アクティビティまたはアプリケーション クラスのみに 1 つのハンドラーを作成する必要がありますか?

私は非常に多くのチュートリアルを読んだので、頭がぐるぐる回っていますが、すべて異なる方法で物事を行い、ほとんどが単一のテーブルのみであり、テーブルを直接表す実際のオブジェクトをいくつか示しています。

意見を聞いたり、チュートリアルにリンクしたり、奇妙な用語を説明したりできてうれしいです.

前もって感謝します

4

3 に答える 3

1

私があなたを正しく読んでいるなら、ORMLiteが最善の策かもしれません。データベースの作成とメンテナンスにリフレクションを使用しますが、これは Perl の方法と思われます。

于 2012-09-24T23:00:42.520 に答える
1

POJO はPlain old java object、通常のクラスであることを意味します。

アダプターは、CRUD を含み、データベース自体を管理するクラスです。Android の世界にはかなりのパターンがあり、それについて話すと本がいっぱいになります。私は Application クラスでデータベースを 1 回開くというパターンを好みます (Android はアプリを強制終了するときにそれを行います)。私が持っていた非常に古いプロジェクトからのサンプルは、基本的なアイデアを示すかもしれません.

DAO はData Access Object、数十冊の本を埋めることができます。プログラミングを開始して、どこに向かっているのかを確認するだけなら...

于 2012-09-24T23:01:23.787 に答える
1

データベースを反映するコードの関係を管理するための優れた方法として ORMLite を発表した他の投稿者は正しいです。ただし、自分でやろうとしている場合は、方法がたくさんあります。コミュニティが実際にどちらかに引き寄せられているとは言えません. POJO個人的には、テーブルのさまざまな属性がフィールド値に対応する Plain Old Java Objects ( - データベースなどの他のものへの特別な接続を意味しない) でエンティティを表す傾向があります。次に、データ アクセス オブジェクト ( DAO) を使用して、これらのオブジェクトを保持および取得します。DAO はすべて、必要に応じてクエリを実行する、共有されたオープンなデータベース オブジェクトにアクセスできます。

たとえば、 table がある場合foo、対応する entity がありclass Foo、列に対応する属性があります。 class FooDAOを取得するメカニズムがありますFoo

public Foo getFooById(Integer id) {
   String[] selection = {id.toString()};
   String limit = "1"
   Cursor c = mDatabase.query(FOO_TABLE, null, "id=?", selection, null, null, null, 1);
   // Create a new Foo from returned cursor and close it
}

2 番目のエンティティbarには多数のfoo. そのために、Bar で、を参照してFooDAO、bar のすべてのメンバー foo を取得します。

public class Bar {
  public List<Foo> getFoo() {
    return mFooDAO.getFooByBar(this);
  }
}

など...このように独自のORMを展開する際にできることの範囲は非常に広いため、必要なだけ実行してください。または、ORMLiteを使用してすべてをスキップしてください:)

また、Android エンジニアは、シングルトンを支持してグローバルにアクセス可能なオブジェクトの Application をサブクラス化することに眉をひそめていますが(hackbod の回答を参照)、意見はさまざまです。

于 2012-09-24T23:21:50.690 に答える