いよいよアプリケーションを自動生成することにする。JBoss Seamのホームディレクトリ(筆者の環境では、C:\seam\jboss-seam-2.0.0.GA)まで移動し、次のコマンドを順番に実行するだけだ。
- seam setup
- seam create-project
- seam generate-entities
- seam explode
1のseam setupコマンドを実行することで、プロジェクトを生成するための設定項目(build.properties)が準備される。筆者の環境では、リスト1の内容を準備した。
リスト1 筆者の環境にて生成されたbuild.properties
workspace.home=C\:/workspace
jboss.home=C\:/Program Files/jboss-4.2.2.GA
icefaces.home=C\:/icefaces/ICEfaces-1.6.1-bin/icefaces
model.package=com.example.model
project.name=iceSeamGen
project.type=ear
action.package=com.example.action
test.package=com.example.test
richfaces.skin=DEFAULT
database.type=mysql
database.exists=y
database.drop=n
hibernate.default_catalog.null=
hibernate.default_schema.null=
hibernate.connection.username=user
hibernate.connection.password=password
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.url=jdbc\:mysql\://localhost\:3306/icefaces
driver.jar=C\:/Program Files/jboss-4.2.2.GA/server/default/lib/mysql-connector-java-5.1.5-bin.jar
2のseam create-projectコマンドを実行することで、このbiuld.propertiesに従って、プロジェクトが生成される。
3のseam generate-entitiesコマンドを実行することで、リスト2、リスト3、リスト4のソースコードが生成される。
リスト2は、テーブルICE_USERに対応するエンティティBeanである(firstNameフィールドに関する箇所以外を省略している)。前述した通り、アノテーション付きのPOJOになっており、アノテーションは、図8のテーブルの内容に対応している。
リスト2 エンティティBeanであるIceUserクラス
@Entity
@Table(name = "ice_user", catalog = "icefaces")
public class IceUser implements java.io.Serializable {
private String firatName;
@Column(name = "FIRAT_NAME", nullable = false, length = 45)
@NotNull
@Length(max = 45)
public String getFiratName() {
return this.firatName;
}
public void setFiratName(String firatName) {
this.firatName = firatName;
}
}
エンティティBeanのほかにも、リスト3のようなHomeクラス、およびリスト4のようなQueryクラスが生成される。これらのクラスは、データベースアクセスに関する基本的なプログラムを提供する「Seamアプリケーションフレームワーク」を用いるクラスであり、生成するアプリケーションにおける基本的な機能は、これらのクラスにより実装されている。Homeクラスは、エンティティBeanに対するCRUD機能を提供する。また、Queryクラスは、エンティティBeanのリストを取得するために用いられる(取得するためのクエリに条件句を追加可能)。
リスト3 HomeクラスであるIceUserHomeクラス
@Name("iceUserHome")
public class IceUserHome extends EntityHome { /* 省略 */ }
リスト4 QueryクラスであるIceUserListクラス
@Name("iceUserList")
public class IceUserList extends EntityQuery { /* 省略 */ }
※ Seamアプリケーションフレームワークの詳細については、JBoss Seamリファレンスマニュアルを参考にしてほしい。
さて、コマンドの実行に戻ろう。最後に、4のseam explodeコマンドを実行することで、生成されたEARアプリケーション(iceSeamGen.ear)が、JBoss AS上に、展開されたまま(exploded)デプロイされる。
この状態で、JBoss ASを起動し、(リスト1の設定内容であれば)次のURLにアクセスすると、アプリケーションが利用できる。
http://localhost:8080/iceSeamGen/