Hibernateの軽量な代替物ですか?[閉まっている]


113

DerbyやSqliteなどの軽量データベースにデータを保存したいシングルユーザーJavaプログラムがあります。プログラムでデータ抽象化レイヤーを使用したいと思います。Hibernateは多くの設定を必要とするようで、私が必要としているものに対してはやりすぎです。Hibernateの軽量な代替品は何ですか?


2
代替方法と使用例(およびSpringでの構成例)は、こちらで確認できます。github.com
comparison –BřetislavWajtr

CMobileCom JPAは、JavaとAndroidの両方の軽量JPA実装です。サイズは約380Kです。軽くて速いです。 cmobilecom.com
John

回答:


142

アノテーションを使用する場合、Hibernateではゼロに近い構成が必要です。クラスパスでマッピングされたBeanを自動検出することもできます!シンプルさパワーの両方の観点から、それに代わるものはないと思います。

また、それ自体をJPAとして公開することもできます。


32
ゼロの隣はゼロではありません。
njzk2

12
また、多くの外部ライブラリがandroid:Pで使用しようとする必要があります
シェリフ

4
Hibernateに代わるより簡単な代替策を見つけようとしました。個人的なプロジェクトでは、MyBatis(なんとひどい名前)を使用しました。それはHibernateよりはるかに多くの作業でした。Hibernateは実際にSQLコーディングを大幅に節約し、親子関係を支援します。Java用のいくつかのActiveRecordスタイルのORMも調べました。Hibernateほど成熟したものや簡単なものはありませんでした。それで、Hibernateに戻ります。
devdanke 2012年

56
質問は代替案ではありませんでしたか?
ルカシュグリューナー

8
HibernateはHiberernateの軽量な代替品ではありません
cosbor11

55

私のORMLiteライブラリはそのような代替手段の1つです。MySQL、Postgres、Microsoft SQL Server、H2、Derby、HSQLDB、およびSqliteをサポートし、他のユーザーに簡単に拡張できます。アノテーションを使用して、クラス、優れたSpringサポート、柔軟なクエリビルダーなどを構成します。


OrmLiteは本当に有望に見えます!しかし、このプロジェクトはまだ生きていますか?1年以上新しいバージョンはありません。Githubでのプルリクエスト/問題に対する回答はありません。
Stefan

3
バージョン5.0は2016
。– Lauri Laanti

バージョン5.1は2018年2月19日にリリースされました。ただし、Hibernateとはまったく同等ではなく、一部のJPAアノテーション実装は適切に機能しません。
M-Razavi

「Hibernateに匹敵する」?これらは両方ともORMですが、それ以外は大きく異なります。JPA実装に関しては、@ M-Razaviを見つけた場合は、バグレポートに記入してください。
グレイ

31

それでもXML構成が必要ですが、MyBatis(以前のiBatis)を見てください。


iBatisは非常に軽量です。SQLからオブジェクトへのマッピングをより簡単に定義および制御できます。
ベルリンブラウン

... iBatisに投票する必要があります。ただし、Hibernateの同類のものと競合しようとしていないため、ORMの代替案ではありません。それは少し違う種類の動物ですが、体重の点であなたが探しているものに合います。
ベクター

1
残っているのはMyBatisです。mybatis.org
ウラジスラフRastrusny

3
i / MyBatisのXMLは、SQLコンソールに簡単にコピーしてテストできる形式で複雑なクエリを保持できるため、実際には利点だと思います。
Peter Tillemans、2011年

22

jOOQには、主な目的の副作用として、SQLをJavaで直接シミュレートする流暢なDSLが付属しています。

  • ソースコード生成
  • UNION、ネストされたSELECT、すべてのタイプのJOIN、エイリアス(自己結合など)などのSQL言語機能を含む標準SQLの完全なサポート
  • UDT、ストアドプロシージャ、ベンダー固有の関数などを含む非標準SQLの幅広いサポート

この記事でjOOQについて読む:http ://java.dzone.com/announcements/simple-and-intuitive-approach 、またはWebサイトに直接アクセスhttp : //www.jooq.org

(免責事項、私はjOOQの背後にある会社で働いています)


3
なんてこった!私たちはそれを使って大規模なETLサービスを実装しました。私はiBATISを使用しており、jOOQは、XMLの範囲や型の安全性の欠如なしに、低レベルSQLと同じ利点をすべて提供します。
2012年

3
jOOQの最高の機能の1つを言及するのを忘れていました:複雑なクエリや動的に生成されたクエリは、制御された方法でアセンブルし、Javaコンパイラーによって検証できるため、データベースが投げるあいまいな構文エラーから解放され、コンパイル時の回帰を提供しますあなたの下でスキーマが変更されたときのカバレッジ。
2012年

JOOQは素晴らしいですが、明らかにOracleとSybaseに無料ではないため、多くの人がこのフレームワークを避け、MyBatisのように使用しています
Makky

@Makky:ご意見ありがとうございます。実際の価値提案を心に留めていただき、一方が無料で他方が無料ではないという事実だけに基づいて、まったく異なるフレームワークに切り替えないようにしてください。メンテナンスおよび移行のコスト、これは中に誘発するあなたのソフトウェア法外とはるかに合理的な商用ライセンスを超えている...
ルーカス・エダー

15

Apache Commons DBUtilsは、JDBCプログラミングから繰り返しの大した手間を省きます。設定はほとんど必要なく、習得も簡単です。これはORMフレームワークではありません(Hibernateおよびここで説明する他のフレームワークのように)が、SELECT列のJavaメンバーフィールドへのマッピングや他の反復的なJDBCプログラミングタスクを自動化します。確かに軽量です。


12

Ebean ORMを見ることができます。-セッションなし-遅延読み込みは機能します-使用および学習するためのよりシンプルなAPI。


SQLiteおよびAndroidと互換性がありますか?
endryha 2010年

SQLiteのサポートが追加されました。私はまだAndroidで試していません。
Rob Bygrave

9

カイエンは私によく仕えました。比較的理解しやすく、簡単に実行できます。リバースエンジニアリングの部分は特に魅力的だと思います。構成はGUIで行うことができます。


6

私はapache empire-dbを提案できます。http://incubator.apache.org/empire-db/

Apache Empire-dbは、オープンソースのリレーショナルデータ永続化コンポーネントであり、データベースベンダーに依存しない動的クエリ定義と、安全でシンプルなデータの取得および更新を可能にします。Hibernate、TopLink、iBATIS、JPA実装など、他のほとんどのソリューションと比較して、Empire-dbはコンパイル時の安全性に特に重点を置いて、かなり異なるアプローチを取ります、冗長性の削減、開発者の生産性の向上に。

例:

// Define the query
DBCommand cmd = db.createCommand();
DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ")
                        .append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");
// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);
// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);
// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;


2

私はパーティーに少し遅れるかもしれませんが、ActiveJDBC を2010年にリリースしました。これは、ActiveRecordパターンのORM実装であり、依存関係でHibernateよりも10倍以上軽量で、実行時に少なくとも2倍高速で、構成が不要です。または注釈。


1

(sourceforgeの)prevaylerを確認することをお勧めします。永続化へのやや軽量なアプローチ。または、DBに対してレポートを作成することを考えていましたか?




-2

Kiteframeworkも非常に軽いormフレームワークです。最小限の構成でほぼすべてのdb操作を提供します。

http://deipakgarg.github.com/Kite-ORM/

開示:私はこのプロジェクトの作成者です


3
Stack Overflowへようこそ!回答を投稿していただきありがとうございます。セルフプロモーションに関するFAQをよくお読みください。また、独自のサイト/製品にリンクするたびに免責事項を投稿する必要があることにも注意してください。
Andrew Barber、

2
開発中ではなく、作者からの新しい現在のリリースもありません。最後のリリース予定は2012
。– Barun
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.