[jpa:45] Re: JPAアンケート集計

Syunpei Shiraishi [E-MAIL ADDRESS DELETED]
2007年 4月 30日 (月) 10:42:14 JST


どうも、白石俊平です。

koichikさんに名前を出していただいたので、ちょっと場を拝借。

JPAは、僕の周りでは全然仕事に使っている人はいません。
なぜなら、O/Rマッピングに前向きな人はすでにHibernateとかで
実現してしまっていて、JPAに乗り換える理由が見当たらないこと、
そもそもO/Rマッピングに懐疑的な人も多いこと、が僕の周りでの
理由です。

とはいえ、僕はJPAにはけっこう期待しています。
その理由は一度試してみた、
ドメインモデルのクラス設計
 ↓
ドメインモデルのソース記述(軽くアノテーション付与)
 ↓
DBスキーマはJavaEE5サーバにアノテーションから自動で構築させる、
つまりejb jarをデプロイするだけ

という開発スタイルをとったらDBの存在をほぼ忘れることができたこと。
もちろんDBのチューニングやテストデータの準備など、DBを意識しなければ
ならない部分は後に出てきますが、プロトタイピングの段階では
とても有効だという手ごたえだったのを覚えています。

で、koichikさんの以下のご意見ですが
> SQL はイヤだけど,HQL/EJBQL (たぶん JPQL も) なら
> いいという人がいるのは予想していなかったので驚きました.

その理由は、先に述べたように僕が「DBを意識せずにすむ開発」に
今は傾いているからでしょう。
プロパティ名とカラム名のミスマッチに舌打ちしたり、
SQLでSELECT文を書くときSELECT * とやるのは妙に抵抗があって
選択列をずらずら並べて書いたり、ベンダごとの方言に頼っちゃって
あとで後悔したりとか、そういうのはもう、ちょっとなあ、という感じです。

もちろん、コンパクトに書けるのは一番の利点。
どうしてもSQL書くときはせめて名前付きクエリ、できればストアドに
したいなと思います。

いやいや、長文ですいませんでした。

Koichi Kobayashi さんは書きました:
> 小林 (koichik) です.
> 
> Date:    Fri, 27 Apr 2007 17:51:04 +0900
> From:    Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [jpa:43] Re: JPAアンケート集計
> 
>> アンケートの結果をまとめてみます。
> 
> Xenon さんがブログで回答してくれてました.
> 
> http://d.hatena.ne.jp/Xenon15/20070427
> 
> その結果を反映すると...
> 
>> (1)JPAを仕事で使っていますか、もしくは今後使う予定がありますか?
> 
> YES・・・6人
> NO・・・9人
> 
>> (2)(1)で「はい」と答えた方に質問です。
>>    JPA実装には何を使っていますか、もしくは使う予定ですか?
>>    [Hibernate / TopLink / OpenJPA / Cayenne]
> 
> Hibernate・・5人
> TopLink・・・1人
> OpenJPA・・・0人
> Cayenne・・・0人
> 
>> (4)お気に入りのDBアクセスのフレームワークはありますか?
> 
> JPA・・・・・・1人
> Hibernate・・・4人
> TopLink・・・・1人
> Kuina-Dao・・・2人
> S2Dao・・・・・4人
> SpringJDBC ・・3人
> SpringJPA・・・1人
> Torque ・・・・1人
> 
> 
>> JPAはもしかしたら全然使われていないのかもなんて
>> 思っていたのですが、YES 6人、NO 8人という結果を
>> 見るとそこそこ健闘しているのかなと思いました。
> 
> 6/15 になりました.4 割ってのは予想外の大健闘です.
> さすがに世間の実態とはかけ離れていると思いますが.(^^;
> 
> 
> 以下,個人的に気になったポイントを少々.
> 
>> (2)(1)で「はい」と答えた方に質問です。
>>    JPA実装には何を使っていますか、もしくは使う予定ですか?
> 
> やっぱり Hibernate 強いですね.
> TopLink Essentials や OpenJPA は今後 Glassfish や
> Geronimo との組み合わせで人気を人気を集めることが
> できるかが注目でしょうか.
> 
>> (3)JPAを学ぶにあたってわかりにくい点を挙げるとしたらそれは何ですか?
> 
> 回答の多くが遅延ロード,エンティティのライフサイクル,
> キャッシュなどなど,永続コンテキストにまつわるものでした.
> JPA のキモですもんね.
> ここは仕様を理解するのも難しいし,教えるのも難しいと
> 思うのですが,加えて細かい挙動は実装によっても違うし,
> 使いこなすのはさらに難しいということで,これが JPA の
> 足かせなのは間違いなさそうですね.
> 
> また,日本語の情報が少ないことに関しては,入門書の
> 計画が進んでいると聞いているので,そう遠くないうちに
> 多少は解消されるかも.
> 
> 現時点では,
> 
> 「標準EJB 3.0プログラミング」
> http://www.amazon.co.jp/dp/4797333367
> 
> の中で JPA の解説があるようです.
> それから,
> 
> 「Oracle JDeveloper 10g JSF/EJB3.0アプリケーション開発」
> http://www.amazon.co.jp/dp/4903687015
> 
> という本がちょうど発売されたばかりのようですね.
> こちらも「EJB3.0」の一部として JPA の解説がありそう.
> 
> 
>> (4)お気に入りのDBアクセスのフレームワークはありますか?
> 
> 話題を Seasar に限ってない ML とはいえ,やっぱり S2Dao が
> 強いだろうと予想していたのですが,意外とばらけたなぁという
> 印象.
> JPA + Hibernate + TopLink を一つにくくれば最大勢力です.(^^;
> SpringJDBC も支持されてますね.
> 
>> (5)DBアクセスの為にSQLを積極的に書きたいですか? 
>>    それともできるだけ書きたくないですか?
> 
> やっぱり,決まり切った SQL は書きたくないという意見が
> ほとんどですね.
> しかし,Java Expert という雑誌にも書きましたが,
> JPA 単独では SELECT 文を書かずに済ませるという面は
> あまり持っていないので,Kuina-Dao や krank のような
> 「JPA 上の DAO フレームワーク」が出てこないと
> なかなか JPA を使う人は出てこないかもしれませんね.
> 
> いや,実は主キー指定の find() でエントリポイントとなる
> エンティティを取ってきて,後は遅延ロードだけで済ませる
> なんて使い方をすれば JPA 単独でも SELECT 書かずに
> 済みますが...
> そういう使い方する人って多いんでしょうか?
> 海外で SSH がデファクトって話があるくらい Hibernate が
> 使われているのは,実はそういう使い方をしているからじゃ
> ないかという話が出ることもあるのですが.
> どうなんでしょうねぇ?
> 
> それから,白石俊平さんのご意見.
> 
> Date:    Tue, 24 Apr 2007 11:50:26 +0900
> From:    Syunpei Shiraishi <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [jpa:22] Re: JPAアンケート
> 
>>> (5)DBアクセスの為にSQLを積極的に書きたいですか? 
>>>    それともできるだけ書きたくないですか?
>> できるだけ書きたくないです。
>> HQL/EJBQLなら良いです。
> 
> SQL はイヤだけど,HQL/EJBQL (たぶん JPQL も) なら
> いいという人がいるのは予想していなかったので驚きました.
> 個人的には JPQL は結合の記述が少し楽になるだけで,後は
> 貧弱なだけの SQL 方言という程度にしか思っていなかったので.
> できれば HQL/EJBQL ならいいけど SQL はイヤという理由を
> 聞かせて頂けると嬉しいです.
> 
> 
> ともあれ (JW),回答いただいた皆さん,ありがとうございました.
> 引き続き,JPA に関していろいろ議論していけたらと思います.
> よろしくお願いします.
> 
> 

--------------------------------------
Big Chance to Win 50,000 Yahoo! Points!
http://pr.mail.yahoo.co.jp/nlcp/



jpa メーリングリストの案内