Hibernateはこちら
2006年12月22日(金) 00:40
相変わらず、Hibernateで検索してくる人の比率が多いのですが!?
最近(もう一年くらい)は、Djangoネタだらけなんですが、多いです。Hibernateで困っている様子が見受けられる方々。
なぜこんなことを言い出したかというと、最近mybloglog.comを使いだしまして、『Hibernateについての困った感じの検索クエリでやってきてkoichikさんの所に抜けていく人』が毎日何人もいることに気づいたという次第です。
かわいそうなので、Hibernateの特徴について少し書いておきます。
- O/Rマッパーとしてとらえないこと
- HibernateはDatabaseプロキシと呼ぶべきものです。理由は、プログラマの指示と無関係にデータベースに対してのアクションタイミングを制御するからです。このあたりの間隔がとらえられないようであれば、避けた方が無難です。
- データベースに仕掛けを持たないこと
- 前述した理由から、Hibernateはプログラマの指示した順番とは違う順番でデータベースにアクションを起こすことがあります。トリガーで書き換えた値を、先に保存の指示を出したデータが上書きすることがあります。
- listした結果が0件の場合は、設定を確認すること
- 必要な設定が無くても、hibernateはエラーにならず、単に0件のデータを返してくるパターンがあります。起動時に行われている設定のロードは格好付けですので信用してはなりません。
- アクセサを書き換えないこと
- Hibernateは、データベースから取得した値が書き換えられたことの確認にアクセサを利用します。ゲッターで値を変更して出力するようなことをしたい場合には、POJOに値をコピーしてから行いましょう。表示層にDAOを持っていくことを許してはなりません。
- 5ガッツ消費すること
- Oracleデータベースのインストールを「1ガッツ」とカウントした場合、Hibernateをまともに使うためには「5ガッツ」必要だといわれています。安直に薦めている記事や風評に騙されず、きちんと検証を行いましょう。CRUDだけ出来ても油断してはなりません。
- 発信すること
- 特徴ではありませんが、Hibernateはそれ自体の噂と比べると個人の発信が非常に少ない気がします。
koichikさんのブログは分量的にも試していること的にも素晴らしいのですが、ブログという特性上。ねぇ(しかもはてなのタイトルは・・・)。
きちんと良いとか悪いとか、良いと思ったなら貢献として何がどう良いのかを発信してください(これはRails使いにも言いたい。secondlifeさん/masuidriveさんくらいしかまともに発信してなくね?あ、くまくまの人もいた)。
なんだか冗長なことになりそうだな、と思ったらDjangoにトライしてみましょう。
DAOを表示層に持っていくななんていいませんよ。表示層から破壊的メソッドを呼ぶには設定をしなければなりませんから。ずっと素敵な形だと思いませんか?
ただし、Hibernateほど細かく操作は出来ません。もちろん難しい部分だけSQLを使えば良いのですが。
忘れてましたが、Middlegenideを使うのに辟易しているのであれば、声をかけてください。Oracleのデータベース情報から、hbmとPOJO用のbeanクラスをリバース生成するAntタスクを実装して持ってますので。VIEWにも対応していますよ。