プロジェクト全体の生産性はあがった?
具体的にどんなところが?
あなたの率直な感想をきかせてください。
http://www.thinkit.co.jp/free/article/0606/13/7/
http://jp.sun.com/communities/open/technology/02_framework2.html
http://www.iajapan.org/iw/iajapanforum2004.html
http://www.wsdeveloper.com/viewtopic.php?p=576
http://www.ne.senshu-u.ac.jp/~proj16-22/hibernate/hibernate.htm
http://b.hatena.ne.jp/keyword/Hibernate
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29914&am...
http://www.ogis-ri.co.jp/otc/hiroba/technical/HibernateForOnsite...
参考までに
個人的にはすごく便利になりましたし、実際一人プロジェクトでは生産効率が上がりました。
SQL 直接書かなくて済むのはいいですね。
Eclipse のプラグインで DB からリバースエンジニアリングで設定ファイルとクラス群を自動生成してくれますし。
http://hibernatesynch.sourceforge.net/
以前 Toque を使おうとして設定の複雑さに頓挫してしまったので、これは非常に助かりました。
逆に複数人でのプロジェクトでは自分以外が初体験だったので、習熟までに時間がかかってしまいました。
当時は日本語の資料が少なかったのも合って難儀しました。
もっとも、これは hibernate に限った話ではないと思いますが。
具体的にありがとうございます。
すごく参考になります。
http://naoya.dyndns.org/~naoya/mt/archives/001483.html
(url は参考です)
少人数のチームであったので一概に生産性があがったかどうかは言えないのですが、個人的には取得に必要な初期投資を鑑みても生産性はある程度出ていたのではと感じました。
たとえば、SQLインジェクション対応とかイチから作成していたら、単体テストも含めると結構しんどいですし。XDoclet等使えばhibernateも手間が軽減できますし。
ただしある程度経験 or カンがいい人でないと逆に生産性が落ちそうな気がします。
あとはシステム開発の生産性とは別になりますが、使い方が下手だと逆にシステムパフォーマンスが落ちる可能性があるので注意が必要だと思います。
ありがとうございます。
言われて気づきましたが、インジェクション対策もいらなくなるんですね。
大変参考になります!
Hibernateは使いどころが重要ですね。
設計を主に行っている私としては、
Hibernateをオブジェクトの永続化フレームワークと捉えることで、ドメインモデル,サービス,DAOの設計に専念できるのでラクになりました。
実装を行う場合でも、JDBC等を利用した手動マッピングの手間と間違いが無いのでラクになりました。
HibernateでDAO層の実装を行う場合、RDBをオブジェクトの永続場所と捉えることが基本です。
RDBをデータの集約場所と考えてしまうとHibernateが適用しにくくなると思います。
Hibernateを知らない人が先にテーブルの設計を行い、その後にHibernateを適用しようとすると、無理が出てくる場合もあります。
Hibernateを導入し始めた時は「DBはオブジェクトを永続化するためだけのもの」とメンバーに認識させるのが辛かったです。どうしても「SQLが、、、」と考えてしまいがちです。
私は基本的にすべてのDAOでHibernate実装を行ってみます。その中でHibernateのデメリットが現れる部分については、Hibernate以外で実装を行うという使い分けをしています。
そして、テーブルの設計はクラス設計が済んでから行っています。(ほとんどドメインモデルから生成したスキーマで事足りるのですが)
使いどころを間違えると、「遅い」「面倒」と言った評価を受けるでしょうが、有効に利用すれば必ず生産性と品質は向上するはずです。
なるほど、見事な使い分けですね。
設計段階から考慮するのですね
ありがとうございます。
どんなモノかはわかっているので、現場の感想があれば、ぜひ!