Download - JavaEE6 First Application #glassfishjp
![Page 1: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/1.jpg)
JAVAEE 6FIRST APPLICATION#GLASSFISHJP
12年6月4日月曜日
![Page 2: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/2.jpg)
JavaEE6作りやすくなったよという話はたくさん聞くけど
12年6月4日月曜日
![Page 3: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/3.jpg)
実は作ったことがない
12年6月4日月曜日
![Page 4: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/4.jpg)
そんな人向け
軽い気持ちで見て下さい。
12年6月4日月曜日
![Page 5: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/5.jpg)
自己紹介
•名前:久保智(@megascus)
• Javaが好きらしい
• JavaEE6は趣味でやってます!
• JavaEE6でSIの現場が楽になればいいなとか
12年6月4日月曜日
![Page 6: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/6.jpg)
アジェンダ
•サンプルアプリを作成
•サンプルアプリにそって説明
12年6月4日月曜日
![Page 7: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/7.jpg)
今回作るアプリの説明
•基本のCreate,Read,Update,Delete
ネタバレ禁止。
12年6月4日月曜日
![Page 8: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/8.jpg)
早速作ってみる
https://github.com/megascus/JavaEE6FisrtApplication
12年6月4日月曜日
![Page 9: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/9.jpg)
出来上がったファイル一覧web.xmlfaces-config.xmltemplate.xhtmlCreate.xhtmlEdit.xhtmlList.xhtmlView.xhtmljsfcrud.cssBundle.propertiesMessageController.javaPaginationHelper.javaJsfUtil.java
beans.xmlpersistence.xmlMessage.javaMessageFacade.javaAbstractFacade.java
※他は省略
UI DB
12年6月4日月曜日
![Page 10: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/10.jpg)
UI(VIEW)から順番にweb.xmlfaces-config.xmltemplate.xhtmlCreate.xhtmlEdit.xhtmlList.xhtmlView.xhtmljsfcrud.cssBundle.propertiesMessageController.javaPaginationHelper.javaJsfUtil.java
beans.xmlpersistence.xmlMessage.javaMessageFacade.javaAbstractFacade.java
※他は省略
12年6月4日月曜日
![Page 11: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/11.jpg)
• JavaEE6の標準UI技術はJSF2.0
• JavaScript書けなくてもリッチなUIが作成できる
•いろいろな所で感じるStruts臭()
UI (JSF)
Struts知ってれば使えるよ。
12年6月4日月曜日
![Page 12: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/12.jpg)
UI系の設定ファイル
必要になるまでいじらない。
12年6月4日月曜日
![Page 13: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/13.jpg)
•言わずと知れたJavaで作ったWebアプリのコアファイル
•セッションのタイムアウト時間とか設定できるよ!
•今回はデフォルトで設定
web.xml
困ったときに修正してね。
12年6月4日月曜日
![Page 14: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/14.jpg)
faces-config.xml
• JSFの設定ファイル。struts-configみたいなもの
• JSF1.Xでは超重要だったけど今は空気(にしたい)
•国際化対応時は使用する
画面数が増えてきても使う。
12年6月4日月曜日
![Page 15: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/15.jpg)
XHTMLファイル
Viewをデザインします。
12年6月4日月曜日
![Page 16: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/16.jpg)
• JSFのViewはXHTMLで記載
• XHTMLなので色々と面倒くさい <BR> → <BR /> とか
XHTML
HTMLが雑すぎるとも言う。
12年6月4日月曜日
![Page 17: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/17.jpg)
XHTML(こんなのがあった)
中身を実際に見てみる。
template.xhtmlCreate.xhtmlEdit.xhtmlList.xhtmlView.xhtml
12年6月4日月曜日
![Page 18: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/18.jpg)
その前に基礎知識
• template.xhtmlにデザインを記載
•それ以外に個々の機能を記載
今のUI作成は全体のデザインと画面ごとに変更できる場所を分けて定義するのが当たり前。
昔はFrameを使ってました。
12年6月4日月曜日
![Page 19: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/19.jpg)
その前に基礎知識
複数の画面を作る場合メニューは同じ場合が多いので使いまわしたい。
12年6月4日月曜日
![Page 20: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/20.jpg)
template.xhtml
デザイン定義してます。
12年6月4日月曜日
![Page 21: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/21.jpg)
template.xhtml
使用するタグを定義。
使用したいタグがあれば追加。
12年6月4日月曜日
![Page 22: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/22.jpg)
template.xhtml
h:XX、ui:XXみたいなのがJSFで記載されたところ。
実行時にはHTMLに変換される。
12年6月4日月曜日
![Page 23: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/23.jpg)
template.xhtml
ctrl+spaceで補完と説明が出てくる。必要なら見てね。
12年6月4日月曜日
![Page 24: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/24.jpg)
template.xhtml
ui:insertの中身だけ各画面で書く。
name属性は説明必要?
12年6月4日月曜日
![Page 25: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/25.jpg)
Create.xhtml
長いのでこの後は抜粋で。
12年6月4日月曜日
![Page 26: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/26.jpg)
Create.xhtml
ui:composition でテンプレートを指定。
ui:defineでui:insertの置換。
12年6月4日月曜日
![Page 27: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/27.jpg)
#{bundle.XXXX}の説明
いわゆる国際化対応。
Bundle.propertiesfaces-config.xml
Create.xhtml
12年6月4日月曜日
![Page 28: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/28.jpg)
#{bundle.XXXX}以外の説明
#から始まるやつです。
• value binding
• method binding
12年6月4日月曜日
![Page 29: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/29.jpg)
value binding
bundle.XXXもこれと一緒。
managed-bean(JavaBeans)やmapなどをマッピングできます。
•画面の値をJavaにマッピングする
12年6月4日月曜日
![Page 30: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/30.jpg)
method binding
h:commandLinkは<a href=~>に変換されるので、リンクが押されるとセッションに入っているMessageControllerクラスのcreateメソッドが呼ばれます。
•画面の操作をJavaにマッピングする
12年6月4日月曜日
![Page 31: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/31.jpg)
commandLinkのaction
immediate=”true”はサーバーサイドで値を使わないという意味。
•拡張子を除いてURLを書いておけば他のページに遷移
12年6月4日月曜日
![Page 32: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/32.jpg)
Create.xhtml以外
Create.xhtmlの説明で十分でした。
•省略
12年6月4日月曜日
![Page 33: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/33.jpg)
jsfcrud.css
手を上げたやつ土下座な。
• cssを知らない人が居れば説明するので挙手して下さい
12年6月4日月曜日
![Page 34: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/34.jpg)
UI系のJavaファイルweb.xmlfaces-config.xmltemplate.xhtmlCreate.xhtmlEdit.xhtmlList.xhtmlView.xhtmljsfcrud.cssBundle.propertiesMessageController.javaPaginationHelper.javaJsfUtil.java
beans.xmlpersistence.xmlMessage.javaMessageFacade.javaAbstractFacade.java
※他は省略
12年6月4日月曜日
![Page 35: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/35.jpg)
MessageController.java
いわゆるmanaged-bean。
•画面から呼ばれるJavaのクラス
12年6月4日月曜日
![Page 36: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/36.jpg)
MessageController.java
アノテーションがついてます。
12年6月4日月曜日
![Page 37: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/37.jpg)
MessageController.java
@ManagedBeanで画面から扱うクラスとして定義。name
でXHTMLから使用する場合の名前をつける
@SessionScopedでセッションに保存すると定義
method bindingの時に間違った説明があったので誰かがtweetで突っ込んでくれているはず。
12年6月4日月曜日
![Page 38: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/38.jpg)
MessageController.java
faces-config.xmlで指定されてる場合はそちらの設定が優先されます。
メソッドが呼ばれた時にnullだと同じ画面、それ以外の場合はURLとして画面移動する
12年6月4日月曜日
![Page 39: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/39.jpg)
PaginationHelper.java
ページャーを作りたかったら見て下さい。ちなみにクラス名は間違えてないです。
• List.xhtmlで実装されているページャー用
12年6月4日月曜日
![Page 40: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/40.jpg)
JsfUtils.java
JSFで困ったらここから呼ばれているクラスで出来ないかを調べる。
• JSFでやり方のわかりにくいアレやらコレやら
•これ自体よりも内部で呼ばれているクラスが重要
12年6月4日月曜日
![Page 41: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/41.jpg)
JsfUtils.java
エトセトラエトセトラ。全部説明したいがスライドの余白が足りない。
• FacesContext
• ExternalContext
• Converter
12年6月4日月曜日
![Page 42: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/42.jpg)
エラーメッセージの表示だけ
strutsで見たことがあるような・・・
JsfUtils.java
Create.xhtml
12年6月4日月曜日
![Page 43: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/43.jpg)
次はDB系web.xmlfaces-config.xmltemplate.xhtmlCreate.xhtmlEdit.xhtmlList.xhtmlView.xhtmljsfcrud.cssBundle.propertiesMessageController.javaPaginationHelper.javaJsfUtil.java
beans.xmlpersistence.xmlMessage.javaMessageFacade.javaAbstractFacade.java
※他は省略
12年6月4日月曜日
![Page 44: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/44.jpg)
beans.xml
DB系として紹介しているけどDBとは関係ないです。
• CDI(今回未使用)のための設定ファイル
• CDIが有効化される条件はこのファイルがあること
• CDIの有効化方法が判りにくいので紹介だけ
12年6月4日月曜日
![Page 45: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/45.jpg)
DB系の設定ファイル
persistence.xml だけ。
12年6月4日月曜日
![Page 46: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/46.jpg)
persistence.xml
GUIからの設定がオススメ。
• DB接続用定義ファイル
• NetBeansからGUIで設定できる
12年6月4日月曜日
![Page 47: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/47.jpg)
persistence.xml
接続性ユニット名は適当に変えてね。
12年6月4日月曜日
![Page 48: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/48.jpg)
データソースについて
詳細は優しい人がtweetしてくれます。
• GlassFishの管理コンソールで設定したものを使用する
•今回は最初から定義されているjdbc/__defaultを使用
12年6月4日月曜日
![Page 49: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/49.jpg)
Message.java
エンティティにDBの値が保持されています。
•いわゆるエンティティと呼ばれるもの
• RDBのテーブルと対応する
•コレを元にテーブルが自動生成される
12年6月4日月曜日
![Page 50: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/50.jpg)
Message.java
フィールドの値は何もつけなくてもDBに保存されます。messageとか。
12年6月4日月曜日
![Page 51: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/51.jpg)
Message.java
エンティティにするためには@Entityアノテーションを付けてSerializableをimplementsするだけです。
エディタを使って新規作成すれば勝手についてくるよ。
12年6月4日月曜日
![Page 52: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/52.jpg)
Message.java
DBにおける主キーの設定です。JPA(O/R
マッパー)を使う場合は通常は人工キーをつかいます。
思想的な話はHibernate in Actionを参照して下さい。
12年6月4日月曜日
![Page 53: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/53.jpg)
Message.java
GeneratedValueは自動採番の設定ですが、採番の仕方によって保守時の難易度が段違いなので使う時はよく考えて。
12年6月4日月曜日
![Page 54: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/54.jpg)
その他詳しい話は
今までの話、全部これ読めで済みます。
12年6月4日月曜日
![Page 55: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/55.jpg)
MessageFacade.java
EJBという言葉を聞くと動悸や息切れ、めまい等の諸症状が現れる方はお気をつけ下さい。
• EJB
12年6月4日月曜日
![Page 56: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/56.jpg)
MessageFacade.java
EJBというかJTAですけどね。
• EJB内ではデータベースのトランザクション管理をスレッドに紐付ける形で勝手にやってくれる
• commitとかrollbackは不要
12年6月4日月曜日
![Page 57: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/57.jpg)
MessageFacade.java
EJBの外でも同じ事は出来ますが、EJB
の中でやったほうが便利です。
•この中でデータベースへエンティティの値が同期される
•トランザクション管理が必要な処理はこの中で
12年6月4日月曜日
![Page 58: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/58.jpg)
MessageFacade.java
EJBの外でも同じ事は出来ますが、EJB
の中でやったほうが便利です。
•この中でデータベースへエンティティの値が同期される
•トランザクション管理が必要な処理はこの中で
12年6月4日月曜日
![Page 59: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/59.jpg)
MessageFacade.java
@StatelessアノテーションがEJBの印。
@Statefulアノテーションもありますが、差は割愛。
12年6月4日月曜日
![Page 60: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/60.jpg)
MessageFacade.java
@PersistenceContextのunitNameには
persistence.xml で指定した持続性Unit名を入れます。
12年6月4日月曜日
![Page 61: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/61.jpg)
MessageFacade.java
そうするとEntityManagerのインスタンスがGlassFishから渡されて、DBにアクセスすることが出来るようになります。
DBのアクセスにはEntityManagerを使用します。
12年6月4日月曜日
![Page 62: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/62.jpg)
MessageFacade.java
本体はAbstractFacadeなのでそちらをみます。
12年6月4日月曜日
![Page 63: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/63.jpg)
AbstractFacade.java
まずはCRUDから。
12年6月4日月曜日
![Page 64: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/64.jpg)
AbstractFacade.java(CRUD)
getEntityManager().merge(entity)を呼び出しても同じ結果になります。
Create
12年6月4日月曜日
![Page 65: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/65.jpg)
AbstractFacade.java(CRUD)
id(Primary Key)を指定して1件取得しています。
複数件の場合は後ほど。
Read(一件)
12年6月4日月曜日
![Page 66: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/66.jpg)
AbstractFacade.java(CRUD)
getEntityManager().persist(entity)を呼び出すと失敗します。
Update
12年6月4日月曜日
![Page 67: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/67.jpg)
AbstractFacade.java(CRUD)
ちょっと変な感じがしますがお約束。どうしてこうなるかはBeginning Java EE
6を読んで下さい!
Delete
12年6月4日月曜日
![Page 68: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/68.jpg)
AbstractFacade.java(CRUD)
複数件取得する場合はCriteriaかJPQLを使います。上の例はCriteria。
Read(複数件)
12年6月4日月曜日
![Page 69: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/69.jpg)
AbstractFacade.java(CRUD)
Criteriaはコンパイラによって静的チェックが出来ますが複雑になると面倒くさい・・・・・
Criteria
12年6月4日月曜日
![Page 70: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/70.jpg)
AbstractFacade.java(CRUD)
JPQLはSQLライクなクエリ言語で、コンパイラにによるチェックは出来ないけれども、簡単です。
JPQL(今回アプリでは未使用)
12年6月4日月曜日
![Page 71: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/71.jpg)
AbstractFacade.java(CRUD)
書き比べてみました。
Criteria×JPQL
12年6月4日月曜日
![Page 72: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/72.jpg)
MessageFacade.java
やっと最後。
最後にEJBの呼び出し方について
MessageControllerクラスから呼び出される
12年6月4日月曜日
![Page 73: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/73.jpg)
MessageController.java
@EJBアノテーションを付けてインスタンスを生成します。new でインスタンスを生成しても正しく動作しません。
GlassFishがよろしくやってくれてます。
12年6月4日月曜日
![Page 74: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/74.jpg)
今回のアプリの処理の流れ
おおざっぱにこんな順に呼ばれてました。
XHTML(画面)
MessageController(managed-bean)
MessageFacade(EJB)
EntityManager(DB)
Message(Entity)で値をやり取り
12年6月4日月曜日
![Page 75: JavaEE6 First Application #glassfishjp](https://reader035.vdocuments.site/reader035/viewer/2022062707/5580bf8ed8b42ac6088b5333/html5/thumbnails/75.jpg)
その他詳しい話は
ご清聴ありがとうございました。
12年6月4日月曜日