Hibernate はもういらないのか

以上、6 記事にわたって Hibernate の使い方を見てきました。本当は結合とかの話もしたかったのですが、私自身まだ実例を作っていない*1ということもあるのですが、何よりも

Hibernate そのものを使うことはほとんどない

という実態の方が大きな要因として挙げられます。最近では JPA を使うことの方が多く、Hibernate はその実装という立場に回り、表向きは Hibernate を知らなくても良くなりました。HQL の代わりに JPQL(Java Persistence Query Language)を使い、マッピングファイルからも解放され、全てアノテーションで解決することができます。EJB と組み合わせれば、かなりスピーディーに開発を進められるでしょう。

もう一つの要因として

複数データベースへの対応が必要ないのに HibernateJPA を積極的に利用する意味はあるのか ?

というのも挙げられます。Hibernate にしろ JPA にしろ、データベースが異なることによる SQL の「方言」を吸収し、データベースとの直接のやりとりを隠蔽することが主たる目的です。使用するデータベースが固定されていることが最初からわかっているなら、HibernateJPA を積極的に利用していく価値は薄れます。むしろ MyBatis のように「(SQL は書く必要があるが) SQL 文の可読性を高めることができる」ツールの方が使い勝手がいい場合もあります。下手な HQL or JPQL よりも SQL の方がマシだった、ということもあり得ます。

こんなことを書くと「Hibernate ってもういらないんじゃね ?」と思うかもしれませんが、前にも書いた通り、HibernateJPA の実装の一つとして生き残ると考えます*2。なので「Hibernate とかいらねーですしおすし」と言っている人には自信を持って「ちげーよ」と言ってやりたいと思っています。

*1:この点については JPA の話をするときまでに実例を用意しておく、ということで自身の課題にしたいと思います。

*2:少なくとも SQL による問い合わせを主たる手段とする RDBMS の時代が続く限りは、の話です。私は NoSQL が RDBMS に取って代わるのは当分先の話だと考えています。