http://vimeo.com/28885655 のようなプログラマーにとって最良の解決策は何でしょうか
ビデオを作成した人々は信じています
私はのような他のいくつかのORM実装について聞いた
それらがどのように比較され、それぞれの長所/短所は何であるかを聞きたいです。
ここ Java ORMと永続性ソリューションの広範なリストを見つけることができます。以下のHibernate/JPAアプローチのすべてではなく、設計上非常に簡単なものもあります。
もちろん、そのサイトにリストされていないソリューションもあります。つまり、 テンプレートを使用したSpring JDBCなど 。そしてこれは、高速で簡単に構築できるJDBCアクセスを必要とし、すでにSpringを使用しているプロジェクトに対する私の個人的な選択です。
一般的に、少なくとも私にとっては、Hibernateが悪く、大きくなったと言うのは少し早いです。それはその目的を非常にうまく果たしますが、多くの靴に合うように成長しました。私の個人的な意見では、それはそのままであると思いますが、NoSQLソリューションはおそらく Spring Data のような新しい種類のJavaデータマッピングソリューションを生み出すでしょう。アプリケーションデータと対話するための単純なアプローチを作成する必要がありますが、そこに到達する方法についてコンセンサスがあるとは思いません...まだ。
プレゼンターは、いくつかのフレームワークが過度に複雑であるという良い例を示しています。膨大な数のORMライブラリは、優れたソリューションがとらえどころのないことを示しているようです。
Github、bitbucket、source forgeには、何百ものORMプロジェクトがあります。 ウィキペディア 良いリストもあります。
私は、JPAのような複雑なフレームワークの軽量な代替手段として sormula を発明しました。機能と例のリストについては、 sormula site を参照してください。
また、そのアプローチが好きであるが必須ではない人のためにアクティブレコードパターンを実装するパッケージも含まれています。
使用する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プロパティです。