web-dev-qa-db-ja.com

Hibernateの代替

http://vimeo.com/28885655 のようなプログラマーにとって最良の解決策は何でしょうか

ビデオを作成した人々は信じています

  1. 多くの場合、Hibernateはやり過ぎです
  2. 基本的なSQLは、休止状態で抽象化する優れた言語です。

私はのような他のいくつかのORM実装について聞いた

それらがどのように比較され、それぞれの長所/短所は何であるかを聞きたいです。

14
dov.amir

ここ Java ORMと永続性ソリューションの広範なリストを見つけることができます。以下のHibernate/JPAアプローチのすべてではなく、設計上非常に簡単なものもあります。

もちろん、そのサイトにリストされていないソリューションもあります。つまり、 テンプレートを使用したSpring JDBCなど 。そしてこれは、高速で簡単に構築できるJDBCアクセスを必要とし、すでにSpringを使用しているプロジェクトに対する私の個人的な選択です。

一般的に、少なくとも私にとっては、Hibernateが悪く、大きくなったと言うのは少し早いです。それはその目的を非常にうまく果たしますが、多くの靴に合うように成長しました。私の個人的な意見では、それはそのままであると思いますが、NoSQLソリューションはおそらく Spring Data のような新しい種類のJavaデータマッピングソリューションを生み出すでしょう。アプリケーションデータと対話するための単純なアプローチを作成する必要がありますが、そこに到達する方法についてコンセンサスがあるとは思いません...まだ。

5
Łukasz Rżanek

プレゼンターは、いくつかのフレームワークが過度に複雑であるという良い例を示しています。膨大な数のORMライブラリは、優れたソリューションがとらえどころのないことを示しているようです。

Github、bitbucket、source forgeには、何百ものORMプロジェクトがあります。 ウィキペディア 良いリストもあります。

私は、JPAのような複雑なフレームワークの軽量な代替手段として sormula を発明しました。機能と例のリストについては、 sormula site を参照してください。

また、そのアプローチが好きであるが必須ではない人のためにアクティブレコードパターンを実装するパッケージも含まれています。

5
Jeff Miller

使用するSQLを制御し、一般的にJDBCに近いままにしておきたい場合は、 MyBatis に興味があるかもしれません。これにより、独自のクエリを記述し、ResultSetをPOJOベースに「自動的に」マッピングするためのフレームワークを提供できます。 XMLベースまたは注釈ベースのメタデータ。

選択は、XMLでは次のようになります。

<select id="selectUsers" parameterType="int" resultType="my.User">
 select id, username, password
 from users
 where id = #{id}
</select>

これは、次のようなユーザーにマップされます。

<resultMap id="userResultMap" type="my.User">
   <id property="id" column="id" />
   <result property="username" column="user_name"/>
   <result property="password" column="hashed_password"/>
</resultMap>

プロパティはPOJOmy.UserのBeanプロパティです。

3
ftr