JSP+JPA



 さて、データベースへの問い合わせ・書き込みの方法の基本は分かったので
SQLこれだけ知ってれば大丈夫
さっそく応用してみようと思う。


 JPAを知るまではJDBCだけで記述していたJSPのデータベース接続をJPAで書き直してしまおう!ついでにデータベースもpostgreからH2に乗換えて統合だ!


 結果→失敗・・・。


 postgreの表に新規登録は出来るのだが、同じアカウントで登録しようとするとサーバービジーエラー(500番)が出る。NetBeansTomCatログの表示は「レスポンスをコミットした後でフォワードできません」だった。
 ふーん・・・、って、いや、意味分かりませんから。*1



 サーバーがクライアントにはレスポンスを一個しか返せないのは当たり前だが、そこん所のソースはいじってないんだよねぇ・・・。やっぱりトランザクションの実行メソッド.commit()が干渉してるのかな?理屈はよく分からんが、レスポンスを返す前にトランザクション.commit()を実行するとなぜかレスポンスをコミットしてしまったと勘違いするようだ。では.commit()をJPAレスポンスの後にして・・・失敗!


 なんでじゃぁぁぁぁ!?


 ・・・まてよ?この部分は既に望み通りに機能しているのに、わざわざ手を加えて動かなくする意味がネーな。原因を徹底的に追求して答えを見つければ、そりゃあ俺の技術レベルはまたひとつアップするわけだが、また一週間ぐらい潰れる可能性は大いにある。一週間じゃ済まないかも。
 自分の技術的好奇心を満足させるために余計な手を加える必要は無いのでは!?したければ、その必要があれば、その時間があれば、その時やれば良い!まずは全体の骨格の完成を急ごう!
 ともあれpostgreからH2への移行はやっとこう。データベースの統合はやっておいて損はなかろう。・・・失敗!「H2データベースが見つかりません」
















 なんでじゃぁぁぁぁ!?


 このあいだのH2での成功はなんだったんだぁーーー!?
 ・・・いや、結局成功してなかったような・・・?
 つーかH2は原因不明の動作不良が多いんだよなぁ・・・。postgreに比べて数倍早いって聞いたから選んだんだけど、もうpostgreに戻そうかなぁ・・・。H2で色々試したけど何がいけなくて動作しなくて、どうしたらうまく行ったのかサッパリ分からん。起動動作すら不要な*2postgreに出戻ろうかナ。動作成功も安定してるし。


 と言う訳で、ひとまず認証登録サーバーはpostgreに戻し正常に機能した。やれやれ。




 本日の教訓


 完成品に触れるべからず

*1:ここの問題とは関係ないようだがググっていたら同じメッセージのエラーを解決したブログを発見。http://d.hatena.ne.jp/watasan_smile/20060831奇妙な解決方法だ。しかし、うらやましい。ソースの構造が全然違うみたいだから試しても意味無いだろうな・・・。

*2:起動動作すら不要:とか思っていたが、偶然昨日タスクマネージャーでプロセスを見てみたら6つも7つもpostgreが起動してた。PC起動と同時に監視モードで立ち上がってるのだろうか?にしては多過ぎない?