Seam-genの試用手記
Seam-genとは?Seam-genはSeamが持っているプロジェクト生成ツールです.開発者はcmdまたはEclipseのUIで簡単な構成を行うだけで自動的に1つのプロジェクトを生成することができ、このプロジェクトはすでに完全なCRUD機能を備えている.開発者はニーズに基づいてプロジェクトを修正するだけでよい.この点ではRoRとよく似ていて、それから盗んだのかどうか分かりません.開発環境準備jdk 1.5.0--Java 5以上でなければなりません.jboss-4.2.2.GA--最新の試用版を使わないことをお勧めします.そうしないと、どのように死んでも分からないので、価値がありません.jboss-seam-2.0.2.SP 1--jbossのように、ダウンロードして直接解凍すればいいです.MySQL Server 5.0--おじいさんたちは何度も詰めていますよね?終わったらもちろん環境変数の設定を忘れてはいけません.このDemoは何をしていますか?小さな項目で、3つのテーブルしかありません.userテーブルには、管理者アカウントと一般ユーザーアカウントが格納されています.suppliersテーブルはプロバイダで、id、name、codeがあります.dealテーブルは取引情報を格納し、supplieridはそのforeign keyとして使用されます.そう言えば、何をしているのか分かるだろう.取引情報を管理することです.終わったらMySqlでデータベースとテーブルを作成します.
Javaコード create database seam; use seam; create table suppliers( id integer primary key auto_increment, name varchar(32 ) not null , code varchar(32 ) not null ); create table deal( id integer primary key auto_increment, name varchar(32 ) not null , supplierid integer, Foreign Key (supplierid) references suppliers(id) ); create table user( id integer primary key auto_increment, name varchar(32 ), password varchar(32 ), role varchar(32 ) );
管理者のレコードをuserテーブルに挿入します.何の役にも立たないでしょう.
Javaコード insert into user values( '1' , 'admin' , 'password' , 'admin' );
これがSeam-genです.Seam-genはEclipseのpluginで1.2にしか更新されず、時代の発展を完全に無視しているので、cmdで手動で生成し、Eclipseに移植するしかありません.以下は構成の記録で、後でゆっくり説明します:C:devjboss-seam-2.0.2.SP 1はSeamのインストールディレクトリseam setup--Seamプロジェクトの構成手順に入る.プロジェクトワークスペース--作業ディレクトリ、任意;JBoss home--Jbossインストールディレクトリ;プロジェクト名--プロジェクト名;ICEFaces--でもn可y、私のこのdemoは使えないなら役に立たない.RichFaces skin--いくつか試したことがありますが、個人的にはwineが好きです.ワインレッドです.as an EAR--EJBのものを使う必要がなければ、warを選んでください.そうしないとear;package name--爱はどうですか;Database--そのデータベース、候補の中から1つ選んで、私のはmysqlです;Hibernate dialect--書き間違えてはいけません.何が起こっているのか分かりません.JDBC driver jar--あなたのjtdsが保管している場所;JDBC driver class--comを使っています.mysql.jdbc.Driver; JDBC url--データベースに接続するurlです.例えば、jdbc:mysql://localhost:3306/seam「username」--データベースのユーザー名をリンクします.password--パスワード;Database catalog--Enterキーを直接押してスキップします.Already exist--y:データベースはすでにあります.n:データベースを再作成します.私のところはもちろんyです.drop and recreate--私はnを選びます.やった!早くしなさい.もちろん、Seamのディレクトリに直接あるbuildという設定もあります.propertiesファイルで直接編集すると、より効率的になる可能性があります.次に、プロジェクト:seam new-projectを生成します.とても簡単で、一歩でできます.もし私がbuildを使っていたらと聞かれるかもしれません.propertiesが構成したのも、このようにプロジェクトを生成しますか?はい、構成が終わったらseamのディレクトリに入り、直接コマンドを入力すればいいです.エンティティの生成:やはり簡単です:seam generate-entities.コマンドを入力すると、seamはデータベースに接続され、データベースのテーブルにJavaエンティティとmappingのプロファイルが生成されます.EclipseでEclipseを開くか、次の手順に従ってプロジェクトimportを入力します.Newプロジェクト-->Generalプロジェクト-->あなたのプロジェクト名(provider)です.これでEclipseで開発できます.Eclipseが作成されると、アプリケーションサーバに配置して実行しようとします.構成は非常に簡単です:cmdに次のコマンドを入力しました:seam deploy;Jbossを再起動し、ブラウザに入力します.http://localhost:8080/provider.牛!ロギンプロジェクトが生成されたとき、Seamは自動的にAuthenticatorを作成しました.JAvaファイル、中にはmethodが1つしかありません.もちろん、最初はビジネスロジックがなかったに違いありません.これらは自分で書かなければなりません.次のJava codeは、簡単なloginロジックを実現します.
Javaコード @Name ( "authenticator") public class Authenticator { @Logger Log log; @In Identity identity; @In EntityManager entityManager; public boolean authenticate() { try { User user = (User) entityManager.createQuery( "from User where name = :username and password = :password") .setParameter("username", Identity.instance().getUsername()) .setParameter("password", Identity.instance().getPassword()) .getSingleResult(); if (user.getRole() != null ) { Identity.instance().addRole(user.getRole()); } return true ; } catch (NoResultException ex) { return false ; } } }
機能は簡単です.データベースにユーザー入力ユーザー名とパスワードが存在するかどうかを検索し、存在しない場合falseに戻ります.存在する場合は、このユーザのroleをIdentity objectに割り当てます.ここでroleはuserテーブルのフィールドで、userまたはadminの2つの可能な値しか存在しません.空は許可されません.IdentityはSeamのbuilt-inのオブジェクトで、私たちが持ってきて使えます.私はそれをあまり説明しません.とにかくsecurityと関係があります.自動的に生成されるすべてのページに対して1つのプロファイルが設定されているページを設定します.例えばメニューには「menu.xhtmlとmenu.xhtml.xml.もう1つのプロファイル:page.xml.コンフィギュレーションファイルの山は、確かに少し煩わしいです.実は構成も簡単で、ログイン後にアクセスできるページやメニューオプションにlogin-required=「true」を追加します.管理者としてアクセスする必要がある場所にidentityを追加します.loggedIn and s:hasRole('admin')ではアクセス制限が実現されます.簡単!はい、ppに行きましょう.メニューにはホームという誰でもアクセスできるリンクしか残っていません.普通のユーザーがログインしてもuserListは見えませんが、dealとsuppliersを編集することができます.管理者としてログインすれば何でもできる.さっき、管理者のレコードを手動でデータベースに挿入すると言いましたが、管理者としてログインしてからwebに新しいユーザーレコードを挿入することができます.総括pros:特にデータベースに対して操作する中小規模のプロジェクトで、しかも簡単で、速くて、あります....さわやか!cons:再構成できますが、多くのプロファイルを生成します.大きなプロジェクトには向いていません.そうしないと、自分で構成してから開発したほうがいいことに気づきます.とにかく何でもやってみて、あなたが望んでいるかどうか分かります.ENJOY!
Javaコード
create database seam;
use seam;
create table suppliers(
id integer primary key auto_increment,
name varchar(32) not null,
code varchar(32) not null
);
create table deal(
id integer primary key auto_increment,
name varchar(32) not null,
supplierid integer,
Foreign Key (supplierid) references suppliers(id)
);
create table user(
id integer primary key auto_increment,
name varchar(32),
password varchar(32),
role varchar(32)
);
管理者のレコードをuserテーブルに挿入します.何の役にも立たないでしょう.
Javaコード
insert into user values('1','admin', 'password', 'admin');
これがSeam-genです.Seam-genはEclipseのpluginで1.2にしか更新されず、時代の発展を完全に無視しているので、cmdで手動で生成し、Eclipseに移植するしかありません.以下は構成の記録で、後でゆっくり説明します:C:devjboss-seam-2.0.2.SP 1はSeamのインストールディレクトリseam setup--Seamプロジェクトの構成手順に入る.プロジェクトワークスペース--作業ディレクトリ、任意;JBoss home--Jbossインストールディレクトリ;プロジェクト名--プロジェクト名;ICEFaces--でもn可y、私のこのdemoは使えないなら役に立たない.RichFaces skin--いくつか試したことがありますが、個人的にはwineが好きです.ワインレッドです.as an EAR--EJBのものを使う必要がなければ、warを選んでください.そうしないとear;package name--爱はどうですか;Database--そのデータベース、候補の中から1つ選んで、私のはmysqlです;Hibernate dialect--書き間違えてはいけません.何が起こっているのか分かりません.JDBC driver jar--あなたのjtdsが保管している場所;JDBC driver class--comを使っています.mysql.jdbc.Driver; JDBC url--データベースに接続するurlです.例えば、jdbc:mysql://localhost:3306/seam「username」--データベースのユーザー名をリンクします.password--パスワード;Database catalog--Enterキーを直接押してスキップします.Already exist--y:データベースはすでにあります.n:データベースを再作成します.私のところはもちろんyです.drop and recreate--私はnを選びます.やった!早くしなさい.もちろん、Seamのディレクトリに直接あるbuildという設定もあります.propertiesファイルで直接編集すると、より効率的になる可能性があります.次に、プロジェクト:seam new-projectを生成します.とても簡単で、一歩でできます.もし私がbuildを使っていたらと聞かれるかもしれません.propertiesが構成したのも、このようにプロジェクトを生成しますか?はい、構成が終わったらseamのディレクトリに入り、直接コマンドを入力すればいいです.エンティティの生成:やはり簡単です:seam generate-entities.コマンドを入力すると、seamはデータベースに接続され、データベースのテーブルにJavaエンティティとmappingのプロファイルが生成されます.EclipseでEclipseを開くか、次の手順に従ってプロジェクトimportを入力します.Newプロジェクト-->Generalプロジェクト-->あなたのプロジェクト名(provider)です.これでEclipseで開発できます.Eclipseが作成されると、アプリケーションサーバに配置して実行しようとします.構成は非常に簡単です:cmdに次のコマンドを入力しました:seam deploy;Jbossを再起動し、ブラウザに入力します.http://localhost:8080/provider.牛!ロギンプロジェクトが生成されたとき、Seamは自動的にAuthenticatorを作成しました.JAvaファイル、中にはmethodが1つしかありません.もちろん、最初はビジネスロジックがなかったに違いありません.これらは自分で書かなければなりません.次のJava codeは、簡単なloginロジックを実現します.
Javaコード
@Name("authenticator")
public class Authenticator
{
@Logger Log log;
@In Identity identity;
@In EntityManager entityManager;
public boolean authenticate()
{
try
{
User user = (User) entityManager.createQuery(
"from User where name = :username and password = :password")
.setParameter("username", Identity.instance().getUsername())
.setParameter("password", Identity.instance().getPassword())
.getSingleResult();
if (user.getRole() != null)
{
Identity.instance().addRole(user.getRole());
}
return true;
}
catch (NoResultException ex)
{
return false;
}
}
}
機能は簡単です.データベースにユーザー入力ユーザー名とパスワードが存在するかどうかを検索し、存在しない場合falseに戻ります.存在する場合は、このユーザのroleをIdentity objectに割り当てます.ここでroleはuserテーブルのフィールドで、userまたはadminの2つの可能な値しか存在しません.空は許可されません.IdentityはSeamのbuilt-inのオブジェクトで、私たちが持ってきて使えます.私はそれをあまり説明しません.とにかくsecurityと関係があります.自動的に生成されるすべてのページに対して1つのプロファイルが設定されているページを設定します.例えばメニューには「menu.xhtmlとmenu.xhtml.xml.もう1つのプロファイル:page.xml.コンフィギュレーションファイルの山は、確かに少し煩わしいです.実は構成も簡単で、ログイン後にアクセスできるページやメニューオプションにlogin-required=「true」を追加します.管理者としてアクセスする必要がある場所にidentityを追加します.loggedIn and s:hasRole('admin')ではアクセス制限が実現されます.簡単!はい、ppに行きましょう.メニューにはホームという誰でもアクセスできるリンクしか残っていません.普通のユーザーがログインしてもuserListは見えませんが、dealとsuppliersを編集することができます.管理者としてログインすれば何でもできる.さっき、管理者のレコードを手動でデータベースに挿入すると言いましたが、管理者としてログインしてからwebに新しいユーザーレコードを挿入することができます.総括pros:特にデータベースに対して操作する中小規模のプロジェクトで、しかも簡単で、速くて、あります....さわやか!cons:再構成できますが、多くのプロファイルを生成します.大きなプロジェクトには向いていません.そうしないと、自分で構成してから開発したほうがいいことに気づきます.とにかく何でもやってみて、あなたが望んでいるかどうか分かります.ENJOY!