Android (「gPhone」) に取り組んでいる人は誰でも、適切な ORM ツールを見つけることができる場所を知っていますか? コードは Java で記述され、データベースは SQLite です。私が見つけたいのは、オブジェクト定義を指定して、テーブルと CRUD 関数を自動生成できるツール (これは素晴らしいことです)、またはそれを除けば、テーブル定義、オブジェクト定義を取得できるツールです。 CRUD機能を自動生成します。問題は、これらすべてが Android フレームワーク内で発生する必要があることです。Android フレームワークには、データベース アクセスのしくみに関する独自の規則があります。
15 に答える
ORMLite パッケージについて、ここに $0.02 を追加すると思いました。
Hibernate の軽量な代替品であり、ネイティブの Android OS データベース呼び出しを使用して Android で SQLite をサポートします。また、他のアーキテクチャで JDBC を使用する他の多くのデータベース タイプもサポートします。ORMLite に関する質問のAndroid メーリング リストがあります。
この質問は古くなりませんが、提案されたフレームワークは古くなります。そのため、比較のために、そのようなフレームワークで重要だと思うものの最初のリストを次に示します。
- Maven または Gradle アーティファクトはありますか? (もちろん、maven と gradle のどちらを使用するかによって、これは大きなプラスになります)
- アクティビティを判断するためのコミットの簡単な概要を含む、簡単な方法でコードにアクセスできますか? (その点で、githubでホストされているコードは私にとって間違いなくプラスです)
- リリース管理: リリース/リリース タグとアーティファクトはありますか? (github でホストされていて、git clone を必要とするか、ダウンロード用のマスター tarball を提供する必要があるものもあります - リリースタグさえ設定されておらず、README で対処されていない場合、私にとっては大きなマイナスです)
- サイズが重要なので、簡単に入手できるヒントをいくつか示しました(何もダウンロードしなかったため、リリース成果物を提供しないプロジェクトにはサイズがありません)
そして、上記の点に関する注意事項を含むフレームワークのリストを次に示します。aBatisや Hadiなども調べましたが、2011 年以降に活動があったものだけを追加しました。
- http://ormlite.com、Maven アーティファクト、52 kB、SVN、ウェブサイトは... 難しいですが、多くの例があるようです。http://ormlite.com/changelog.txtによると、最後のバージョンは2013 年から 4.48、 https://github.com/j256/ormlite-core (リリース タグ)、2015 年 3 月の最後の活動
- http://greendao-orm.com、優れたメンテナンス、Maven アーティファクト、フォーカス: 高速パフォーマンス、小さなサイズ、少ない RAM 消費。Github: https://github.com/greenrobot/greenDAO/ (リリース タグ、> 2300 スター)、最後の活動は 2014 年 11 月
- https://github.com/roscopeco/ormdroid、小さいサイズ、最後の活動は 2014 年 8 月
- http://www.activeandroid.com、https://github.com/pardom/ActiveAndroid (> 2300 スター)、優れたメンテナンス、コミュニティ、リリース タグなし (マスター tarball へのダウンロード ポイント)、Maven アーティファクト、2014 年 10 月の最後のアクティビティ
- http://droidparts.org、https://github.com/yanchenko/droidparts (リリース タグ、> 600 スター)、依存性注入、Maven アーティファクト、積極的に維持
- http://www.androrm.com、https://github.com/androrm/androrm (リリース タグ)、2014 年 1 月 2 日の最後の活動 (github)
- https://github.com/emilsjolander/sprinkles (リリース タグ、> 600 スター)、2014 年 5 月の最後のアクティビティ、Maven アーティファクト (@AndroidGecko に感謝)
- http://realm.io、https://github.com/realm/realm-javaは ORM だけでなく SQLite も置き換え、iOS (リリースタグ、> 1600 スター) にも対応し、積極的に維持され、独自の Maven リポジトリ
私はそれらを試したことはありませんが、現在アクティブなプロジェクトをリストすることで、現在の読者に少し時間を割くことができるかもしれません. 上記の点のいくつかを満たし、(しばらくの間) 深刻な開発が行われている他のプロジェクトを知っている場合は、コメントを追加してください。
編集 (2013 年 11 月): リストをプロジェクトの現在のステータスに更新しました。これらの一部は、リリース タグを github リポジトリに追加し、Maven/Gradle のサポートも追加しました。よくできました!
編集 (2015 年 4 月): リストを更新し、Sprinkles (@AndroidGecko のコメントによる) と Realm.io を追加しました。
パフォーマンスとコードサイズが重要な場合は、 greenDAOをチェックしてください。私はその作成者であり、別の ORM を作成する動機は、ホットスポットでの反射を避けることでした。greenDAO は ORMLite より最大 4 倍高速であることが判明しました。詳しくは特集ページをご覧ください。
私はあなたがまさに求めているものを知りませんが、アーキテクチャ要件が柔軟である場合に役立つと思われるSQLiteの代替手段があります。db4oをチェックする価値があるかもしれません:
ActiveAndroid ($20)はまさにあなたが必要としているもののようです。
私はActiveAndroidが好きでした。Android専用に書かれているようです。それは私にとってプラスのように感じます。
私は Ruby on Rails の経験があり、ActiveRecord の Rails のやり方が好きなら、このライブラリをすぐに使い始めることができます。
https://github.com/ahmetalpbalkan/orman
Orman フレームワークが役立つかもしれません。それは特にそのために設計されており、非常に小さくて便利です。
AndroidでORMも探しています。ActiveAndroid、NeoDatis、およびdb4oをテストしましたが、最後の 2 つのうちの 1 つを使用すると思います。
NeoDatis と db4o は非常に似ているため、最適なものを選択するためのアドバイスをお願いします。誰かが彼のプロジェクトでそれらのいずれかを使用していますか? 無料アプリと有料アプリで使い分けますが、どちらもAndroidのライセンス制限はないようです。
ここには、NeoDatis が db4o よりも高速であると思われるベンチマークがありますが、これに基づいて意見を述べることができるかどうかはわかりません。
もう 1 つの新人: android-active-record。これは非常に軽量で、SQLite http://code.google.com/p/android-active-record/に支えられた Android 用の持続性フレームワークを使いやすいです。
このツールは非常にシンプルで使いやすいです。
Aptana のActiveRecordJSは、gPhone で実行する Javascript ORM です。Jaxer と Gears で動作するように設計されています。Jaxer アダプターを使用すると、SQLLite に接続できます。
更新: 明確にしたとは思いませんが、ActiveRecordJS はクライアント側で実行される ORM であり、gPhone で有利になる可能性があります。
私のDroidParts /http://droidparts.org/はちょうど v0.5 になりました。DI/ORM ライブラリなどです。
多くのドキュメントはありませんが、サンプル アプリが含まれています。
Android 用の JPA ORM の独自の実装を開発しました。まだ完全な機能ではありませんが、@Entity、@Id、@Column アノテーションを使用してクラスにアノテーションを付けることができ、SQLite データベースに格納および取得できる JPA エンティティを取得できます。一般に公開する前に、もう少し機能とクリーンアップが必要ですが、十分な関心があれば、私の努力が加速するかもしれません.
Even though this is an old post, the topic is still relevant. Hence, I want to share an interesting article and nice approach to solving most of the issues mentioned in the question:
http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/
Hope anyone finds this as useful as myself!
db4o (v. 8) で否定的な経験がありました: インデックス作成が適切に機能しませんでした (例外など)。そのため、オブジェクト構造にオブジェクトがある場合に、外部テーブルに重複が作成されないようにする方法を管理できませんでした。私の質問でより詳細な説明。いつか良くなることを願っています。