JPAの実装に関して

http://d.hatena.ne.jp/masanobuimai/20090120#1232461604

以前調べたときはHibernate Entitymanagerがダントツで実装が悪かったですね。updateは全カラムupdateしやがるし、関連がうまく効いてくれないし。LOGもデフォルトでまともに吐き出してくれなかったような。独自のAPIとか使わないとかなりイマイチでしたね。移植性を考えてJPA汎用のAPIだけを使うならたぶん一番使わないほうがいい実装でしょう。

逆にOpenJPAは安定度というのかな、バランスが一番良いと感じました。発行するSQLがわかりやすいというか。

EclipseLinkとToplink Essentialsは違いは感じられませんでした。注意しないといけないのはこれらはデフォルト設定だと積極的にエンティティをキャッシュすること。EJB2.xまでのCMP Entity Beanに近いと考えると一番しっくりは来るのかもしれません。パフォーマンスが良いですけど。コードでキャッシュコントロールするか(かなり大変だが、うまく使えば結構な効果が出るかも)キャッシュをOFFにするか考えたほうがいいでしょう。他のシステムがDBを直接見る場合はOFFにしたほうがよいでしょう。


まぁ、今までに収めたJPA使った納品物4種はすべてToplink Essentialsですけど。