seasar2を試す・2日目

昨日から休日を利用してSeasar2で遊んでみる。昨日ソフトウェア更新してみてわかったのだが、Seasar入れる前にCallisto Update SiteでVisual Editorなんか入れていると絶対うまく動かない。なので、とりあえずSeasarのみ入れた状態でいろいろ遊ぶことにした。
基本的にめんどくさいことは嫌いなので、Daoも、Entityクラスも自動生成してくれないとテンションが下がってしまう。感動したのは、DatabaseViewでテーブル名を右クリックして、"Generate scaffold"でマスターメンテ的なWebアプリが一瞬でできてしまうことだ。DBはMySQLを入れているが、phpmyadminとかいれなくてもいいのでこれはこれで大いに助かる。ただ、↑のscaffoldでできたPageクラスに未使用のimportが多く出ているのはちょっと気になるが。
個人的には仕事でデスクトップアプリケーションを使うのでそろそろs2jface関連の自動生成機能を含んだプラグインのリリースを望む。できればs2jface版のScaffold機能なんかあったらうれしい。

約1か月ぶり。

仕事でNetBeansで開発するのかと思いきや、今流行りのフレームワーク − Seasarを使いたい、それにはEclipseのほうが都合がいい、ということであっさりEclipseに切り替えることになった。
さっそくs2daoで仕様通りの機能が実現できるか調査のために、Doltengと、DbLauncherプラグインをEclipse3.2.0に入れてみた。DatabaseViewから右クリック→Find ChildrenでDBのスキーマを表示でき、それを右クリックすることでDaoとEntityクラスを自動生成できるのが便利なのだが、スキーマがときどき表示されない。。。orz。バグかなぁ。でも周りから似たような事例は報告されていない。私だけ?
ちなみに、近所の本屋にSeasarの本を見つけたが、なぜかNetBeans(それも古いバージョン)で実装されている。ネット上ではほとんどEclipseでしかプラグインがなさげだが。

サンプルお試し。

仕事(たぶんSwing+JDBC予定)で使えるかもと思って、遊びと調査を兼ねてhttp://journal.mycom.co.jp/special/2006/jpa/menu.htmlで紹介されている特集記事を読んで、実際にサンプルを作ってみた。
↑の記事ではデータベースにD2を使っているが、こちらの環境ではJavaDB(JDK6についてるやつ)を使ってやってみた。最後のSwingを使ったサンプルをやってみたが、記事のサンプルそのままのJavaソースだと、TopLink起動途中でValidationExceptionがでてしまった。原因はどうもDepartmentエンティティクラスのプロパティでCollection型のものをつかっているのがだめらしい。(OneToManyのアノテーションつき。)そこで、Collectionというようにジェネリックスを使って特定のエンティティクラスに対応付けるように修正したところ、うまく動いた。(記事のサンプルではそうなっていないが。)理由はよくわからないが、テーブルのリレーションをエンティティで表現するのに、ジェネリックスを使わないとTopLinkが認識してくれないのかもしれない。

netbeansでわかった細かいこと。

javaDBをもてあそんでみた結果、netbeansIDEでjavaDBにSQL文を投げる際、細かいことだが、次の2つではまりかけた。
ひとつは、テーブル名を全部小文字で作ると、自前でSQL(たとえばinsert文)を作るときに"<スキーマ名>"."<テーブル名>"で指定してあげないと(ダブルクォーテーション要!)エラーになるってこと。そのままたとえば「insert into [TABLE名] values …」とやると永遠にinsertできない。
もうひとつは、select文を投げるときにwhere句をつけたいとき、where "<カラム名>"=1とかいうように、カラム名にダブルクォーテーションをつけてあげないと、いうことを聞いてくれないということだ。
これらのことに気づくのに、結構時間がかかった。これ、こまかいことだが(そのせいかもしれないが)Netbeans純正チュートリアルにのってない。(もしくは載っているのに気づかないだけ?)

データベース。

JDK6のSwingでデータベースを使ったサンプルを作ろうとしている。(まずはJDBCオンリーで。)そこでまずWindows Vista Business でPostgres8.2.3をDLしてインストールしようとすると、インストールの終わりのほうでエラー(2755?)がでてインストールに失敗する。ググッて見たけどPostgresがVistaに対応してるかどうか書いてあるサイトが見つからなかった。(単に探し方が下手なだけかもしれんが)そこでMySQLをと思ってまず対応してるヴァージョンがあるか調べてみたところ、MySQL5.1βがかろうじてVistaで動く、ということが「教えて!goo」でわかった。そこまできてやる気がなくなった。とりあえず対応するまで待つしかない、ということか。当分はHSQLDBかJavaDBでやるしかない、ということらしい。

矛盾してます・・・・

朝のミーティングで、新入社員のお世話について話があったが、到底承服できるものではなかった。
なんでも、H支店では新入社員が30人以上いて、定時になると一斉に帰るのを見て、早く帰りすぎ!と上層部がお怒りになったとか。(何が悪いの?)上層部によれば、定時過ぎても残って勉強するくらいの気概が足りん!ということらしいのだが、だからといってこちら(S支店)でも定期的に新入社員にテストして、できなかったら居残りor土曜日出勤(もちろん指導側であるわれわれも・・・)させよというのはどうよ。会社に勉強させてもらってるという意識が足りない、というようなことをいってるらしいが、残業すればいいってもんでもないでしょ。テストすること自体は別にいいけど、できなかったら居残りor土曜日出勤って無茶すぎます…だいたい、H支店の実情をそのままこちら(新入社員は数人)に当てはめてほしくありません。(本音は土曜日出勤したくない、というのが90%なのだが)