Derby や Sqlite などの軽量データベースにデータを格納したい単一ユーザーの Java プログラムがあります。プログラムでデータ抽象化レイヤーを使用したいと考えています。Hibernate には多くの設定が必要なようで、私が必要としているものにはやり過ぎです。Hibernate の軽量な代替手段は何ですか?
14 に答える
注釈を使用する場合、Hibernate にはほぼゼロの構成が必要です。クラスパスでマップされた Bean を自動検出することもできます! シンプルさとパワーの両方の観点から、それに代わるものはありません。
また、JPAとして公開することもできます。これは(IMHO)さらに単純です。
私のORMLiteライブラリは、そのような代替手段の 1 つです。MySQL、Postgres、Microsoft SQL Server、H2、Derby、HSQLDB、および Sqlite をサポートし、他のものに簡単に拡張できます。アノテーションを使用してクラスを構成し、優れた Spring サポート、柔軟なクエリ ビルダーなどを使用します。
それでもXML構成が必要ですが、MyBatis(以前のiBatis)を見てください。
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の背後にある会社で働いています)
Apache Commons DBUtilsは、JDBC プログラミングから反復的な単調な作業の多くを取り除きます。構成はほとんど必要なく、習得も簡単です。これは ORM フレームワークではありませんが (Hibernate やその他のフレームワークがここで言及されているように)、SELECT 列の Java メンバー フィールドへのマッピングや、その他の反復的な JDBC プログラミング タスクを自動化します。確かに軽いです。
Ebean ORMをご覧ください。- セッションなし - 遅延読み込みのみが機能します - 使用および学習が簡単な API。
カイエンは私によく役立っています。比較的簡単に理解し、実行に移すことができます。リバース エンジニアリングの部分が特に魅力的だと思います。設定は GUI で行うことができます。
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);;
ORMAN フレームワークも優れています。https://github.com/ahmetalpbalkan/orman
ドキュメント: https://github.com/ahmetalpbalkan/orman/wiki
比較: https://github.com/ahmetalpbalkan/orman/wiki/Why-orman-is-better-than-other-orms-for-you%3F
私はパーティーに少し遅れているかもしれませんが、 2010 年にActiveJDBCをリリースしまし た。これは ActiveRecord パターンの ORM 実装であり、依存関係において Hibernate よりも 10 倍以上軽く、実行時は少なくとも 2倍速く、構成は不要です。または注釈。
prevayler (sourceforge) を参照してください。永続化へのやや軽量なアプローチ。それとも、DB に対してレポートを作成することを考えていましたか?
私は重いORM の代替としてsormulaを作成しました。CRUD 対応で、POJO に対応しており、使用、構成、理解が簡単です。ゼロ構成での使用が可能です。www.sormula.org
リレーショナル データベースの使用が必須でない場合は、db4o を試してみてください。
Kiteframework も非常に軽量なフレームワークです。最小限の構成でほぼすべてのデータベース操作を提供します。
http://deipakgarg.github.com/Kite-ORM/
開示:私はこのプロジェクトの作者です