2009年8月7日金曜日

seam generate-entities

本質的にはあまり関係ないですが、PostgreSQLをリモートから接続できるようにします。

# echo "host all all 192.168.0.0/24 md5" >> /etc/postgresql/8.3/main/pg_hba.conf
# vi /etc/postgresql/8.3/main/postgresql.conf(下記の行を変更)
listen_addresses = '*'
# /etc/init.d/postgresql-8.3 restart

続いて、myprojectというテーブルを作成します。サンプルですので、カラムは2つしかありません。
# psql myproject -Useam -hlocalhost
Password for user seam:
myproject=> create table myproject (id serial primary key, val text not null);

pgAdminIIIなどで、PostgreSQLサーバーに対して接続できる状態であることを確認します。PostgreSQLサーバーがローカルにあるのであれば、それで特に何もしなくて良いでしょう。
PostgreSQLサーバーがリモートであれば、ローカルのseamからも見えるようにします。(今回からはseam setupの変更場所だけ書くようにします。)
> seam setup settings:
[echo] JDBC URL: jdbc:postgresql://192.168.0.7:5432/myproject
> seam update

これで、ローカルのseamでもリモートのseamでも同じPostgreSQLサーバーを見に行きます。(当たり前だけど)

続いて、C:\Projects\myproject\resources\META-INF\persistence-dev.xmlの設定がPostgreSQL用になってくれてないので

直しておきます。seam-genがやってほしいところ。変えるのは下記の行。
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>

同様に、C:\Projects\myproject\resources\myproject-dev-ds.xmlの設定も甘いので、下記のようになるようにしましょう。
<datasources>
<local-tx-datasource>
............(snip)............
<metadata>
<type-mapping>PostgreSQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>

で、今回は作成したテーブルに対して、自動的にJavaのO/Rマッピングクラスを生成し、CRUD出来るようにします。何するの?というと、下記一発!
> seam generate-entities

これだけで、myprojectテーブルに対してのCRUDができるようになります。
> seam deploy

して、リモートのJBossにデプロイしましょう。(ローカルのJBossでテストするなら seam deploy 時点でデプロイされています)
seamcrud

正しくデプロイされると、メニュー上に「Browse data」というリンクが出来ますので、「Myproject List」を選択します。遷移するとmyprojectテーブルに対しての検索画面が表示されます。簡単にCRUD出来る筈なので試してみてください。
seamcrud2

次回は、generate-entitiesで作られたクラスを追いかけてみましょう。

0 件のコメント:

コメントを投稿