web-dev-qa-db-ja.com

Android開発でORMを使用することは理にかなっていますか?

Android開発でORMを使用することは理にかなっていますか、それともUIとDBレイヤー間の密接な結合のためにフレームワークが最適化されていますか?


背景:Android開発、そして最初の本能(.netの背景からのもの))で始めました小さなオブジェクトリレーショナルマッパーと、定型的な負荷を減らすのに役立つその他のツール(たとえば、POJO + OrmLite + Lombok )を探すことでした。

しかし、最初のおもちゃのアプリケーションを開発しているときに、データベースカーソルを明示的に必要とするUIクラス AlphabetIndexer に遭遇しました。 Androidライブラリは、UIとDBレイヤーの厳密な分離には適していないのではないかと思います。 (直接データベースアクセスの代わりに)POJOをどこでも使用します。


説明:私はORMを一般的に使用する利点をよく知っています、私は特にAndroidクラスライブラリがどれだけうまく機能するかに興味があります。

27
Heinzi

Androidは他のフレームワークとはうまく機能しません。その推奨される開発スタイルでは、他のライブラリなしでAPIからすべてを構築することを前提としています。 UIレイヤーはモデルに非常に密接に結合されています。このスタイルは、複雑なアプリケーションではなく、小型のモジュール式アプリを書くのに最適です。

Androidの機能のいずれかが必要かどうかについて、少し考えておく必要があります。 ORMを使用する必要がない場合は、失うものはありません。そうでない場合は、ハイブリッドを解決する必要があるかもしれません。できる限りORMを使用しますが、Cursorsおよび必要なその他の低レベルオブジェクトへのフックを自分に与えます。選択したORMがDAOを必要とする場合(私はあなたが言及したものに精通していません)、この層はおそらくそれらにとって最適な場所です。

または、外部ORMをまったく使用する必要がない場合もあります。ニーズが単純な場合は、それらを満たす単純なデータアクセスレイヤーを作成できます。ほとんどのアプリデータベースの要件は適切ではありません。テーブルが2つしかない場合は、2つのアクセスクラスとモデルオブジェクトを作成して、適切に呼び出します。

YAGNIとKISSは、ここで成功するためのキーワードです。数日かけてプロトタイプを作成することをお勧めします。簡単なテストアプリを捨てることを恐れないでください。すべてのアイデアを一人で試して、決定してください一部またはすべてがプロジェクトで機能するかどうか。

20
Michael K

それはあなたがあなたのデータモデルをどうするかによります。オブジェクト指向モデルを操作する既存のコードがあり、それらのオブジェクトをsqliteデータベースに永続化する場合は、ormが必要です。

新しいAndroidコードを最初から作成する場合、アプリがOOプログラムとして本当に複雑なCAD操作を実行しない限り、インメモリデータモデルは避けます。たとえば、かもしれません。ただし、ほとんどのプログラムでは、データベースにデータモデルを保持し、Cursor、Adapter、およびViewオブジェクトのチェーンに多大な負担をかけさせます。

6
Zigurd