web-dev-qa-db-ja.com

Hibernateの軽量の代替品ですか?

単一のユーザーがいるJavaプログラムで、DerbyやSqliteなどの軽量データベースにデータを保存したい。プログラムでデータ抽象化レイヤーを使用したい。Hibernateが表示される多くの設定を必要とし、私が必要とするものに対してはやり過ぎです。Hibernateに代わる軽量の代替物とは何ですか?

111
Jared

注釈を使用する場合、Hibernateはゼロに近い構成を必要とします。クラスパスでマップされたBeanを自動検出することもできます!シンプルさの両方からおよびパワーの観点から、それに代わるものはありません。

また、それ自体をJPAとして公開することもできます。これは(IMHO)さらに簡単です。

142

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

54
Gray

XMLの設定が必要ですが、 MyBatis(以前のiBatis) をご覧ください。

31
kgiannakakis

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

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

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

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

22
Lukas Eder

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

14

Ebean ORM をご覧ください。 -セッションなし-遅延読み込みは機能します-使用および学習するためのシンプルなAPI。

12
Rob

カイエン は私に役立っています。比較的理解しやすく、簡単に実行できます。リバースエンジニアリングの部分は特に魅力的です。 GUIを使用して設定を行うことができます。

9
Benno Richters

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

Apache Empire-dbは、データベースベンダーに依存しない動的なクエリ定義だけでなく、安全でシンプルなデータの取得と更新を可能にするオープンソースのリレーショナルデータ永続化コンポーネントです。他のほとんどのソリューションと比較してHibernate、TopLink、iBATIS、またはJPAの実装では、Empire-dbはcompile-time safety、冗長性の削減、開発者の生産性の向上。

例:

// 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);;
6
Somatik
2
AhmetB - Google

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

2
ipolevoy

(sourceforgeの)prevaylerをご覧ください。永続性に対するやや軽量なアプローチ。または、DBに対してレポートを行うことを考えていましたか?

1

リレーショナルデータベースの使用が必須ではない場合は、db4oを試してください。

1
Behrang

sormula をヘビーウェイトORMの代替として作成しました。 CRUD対応、POJOフレンドリー、使用、構成、および理解が簡単です。ゼロ構成の使用が可能です。 www.sormula.org

1
Jeff Miller