このクラスだけではデータベースにCRUDできませんので、次にDAOを作成します。これをEJBで作るのがポイントです。ここで間違える人が多いですが、選択肢はこれしか無いと思った方が良いのではないでしょうか。Classes」を選択します。Classesに上で作成したEntityが出てくるので、選択します。パッケージ名の後ろに「dao」をくっつけてあげましょう。Managerを内包した「CustomerFacade.java」という名前のEJBが自動生成されます。これを使ってCRUDするわけです。このEJBは「AbstractFacade」という名前のスーパークラスを継承しており、そこにCRUDの実装がありますので、基本処理を変更したい場合はここをいじります。二つ目以降のDAOを作成した場合、同じようにこのスーパークラスを継承するように自動生成されるので、注意が必要です。見たらEntityのクラスがプロジェクトパッケージの直下にありました。これは生成時のオプション指定忘れなので「entity」とおしりにくっつけます。各種処理はNetBeansがやってくれます。ビジネスロジックを作成するはい、最後にビジネスロジックです。当然ながらEJBで作ります。ビジネスロジックは自動生成なんかできないので、普通に作成します。JavaBeans」、名前に「CustomerLogic」、パッケージを「advent.logic」にして生成。頭に「@Stateless」と書いてあるだけの普通のPOJOができます。これが今時のEJBですね。動かすためにはデータが必要ですので、今回はまずデータ登録系の処理をここに追加しましょう。ここには普通にDAOクラスを@EJBでインジェクトし、そこで該当メソッドを呼び出すだけになります。なんというか、拍子抜けですね。データベースを含むトランザクション処理はEJBコンテナー側が全自動でやってくれるので、これが正しい姿です。このメソッドが呼ばれた瞬間にJTAトランザクションが開始(BEGIN)され、正常終了するとトランザクションが完了(COMMIT)されます。例外が発生した場合は取り消し(ROLLBACK)ですね。エンタープライズ系処理はこうでなくてはいけません。COBOLの正統後継者たる所以です。はい、バックエンド系処理は終わりです。データベース系設定作業がくそめんどくさい割に、バックエンド処理は爆速で終わったかと思います。バックエンドを呼び出す画面についても省エネ爆速で作りましょう。Beanは二つでひとつのセットです。あとは完了画面だけ作ります。最低限動く事を確認するだけの構成にします。WARプロジェクトを作った場合、初期設定でJSFが有効になってません。これでは困るのでちょいと設定します。Facesを選択します。Patternも「*.xhtml」に変更しておいて下さい。ないと全てのリクエストに対して/faces/とかつけなければならず、実態のファイルの配置とずれてしまうという困ったことがおきます。JSFを有効にしたら、index.xhtmlファイルができます。こいつが新しいトップページになりますので、古いindex.htmlは削除して下さい。ここまで全自動でやって欲しいなぁ・・・余計な作業ですね。ASP.NETのコードビハインドみたいなやつです。画面と一対一で原則作ります。普通にクラスを新規作成します。アノテーションで@Namedと、@ViewScopedをつけて下さい。javax.faces.view.ViewScoped;」側を使って下さい、ということです。残りはEntityに定義したものをそのままフィールドに定義してしまいましょう。あとはGetterおよびSetterを作る必要がありますが、そんなものはNetBeansに作らせましょう。Setter」ですね。日本語版だと妙な名前になってた気がしますが、こういうプログラミング系は英語版を使うと変な所で悩まなくとも済みます。最後にボタンを押したときのアクションメソッドを作ります。下記のような感じです。Entityに画面の中身を詰めてEJBに投げるだけ。Validationの関係上、NULLが許容されないため、とりあえずLong.MIN_VALUEを入れておきました。0でも何でもいいんですが、INSERT時に正しい値に置換されますので気にしないで下さい。Beanのフィールドに設定した方が早いのでは?」というFAQがあります。分けた方が良いでしょう。画面で入力する値は本質的に全て文字列ですが、DB設定の型は様々です。Beanと、本質的な正しさを追求すべきEntityは分けた方が良いでしょう。Faceletの準備はい、では最後にFaceletをいじくりましょう。index.xhtmlを開きます。2.2で必要となるネームスペースを追加します。「xmlns:jsf」というのを追加する必要があります。URLそのものはNetBeansが自動補完してくれます。これが無いとJSFの特殊タグが使えないのです。これもNetBeans側のテンプレートを更新して欲しい気がしてます。自分でContributeしろと云われそうですが。はい、とりあえず画面側はできましたので、ここで一回起動しておきましょう。メニューバーの右矢印ボタンを押すと、ブラウザーが起動するかと思います。下記の画面が出たら、バックエンド側のEJBやJPAも正常に動作しています。