- - PR -
EJBでのシーケンス用カラムの扱い
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-09-19 11:39
こんにちは。早速ですが質問に移らせて頂きます。
現在、EJBの勉強を始めたばかりで分からないことがあります。 会員登録機能のようなものを作る場合、DBに テーブル:MEMBER カラム:ID(プライマリキー)、NAME と用意したとします。 流れとしては、 1.会員新規登録画面で名前を入力し、新規登録ボタンを実行 2.受け取ったサーブレット(アクション)で、CMPを生成 3.CMPが自動的にDBにレコード追加 4.正常登録終了を知らせる画面 となるのかな、と考えています。 ここで、2では、プライマリーキーを引数に取るcreateメソッドを発行して、 EntityBeanの生成を行いたいのですが、IDをシーケンスとして振りたい場合 (1,2,3........と自動的にインクリメントされるように)、どのように新規登録会員のIDを取得したら良いのでしょうか? 自分なりに考えてみたのですが、次の方法しか思い浮かびませんでした。 「上記1で会員新規登録画面を開くタイミングでDBにアクセスして、現在のMAXのIDを取得しておき、その値に1を加算したものを今回登録する会員のIDとしてセットする」 何か他に、EJBやアプリケーションサーバ特有の機能を用いた実装方法があるのでしょうか? EJBを使わない、直接SQLを書く方法だったらすぐ思いつくのですけど・・・。 私の環境はMySQLとJBossです。 他の環境でも参考になると思いますので、何かありましたらお願いします。 以上、ご指導よろしくお願い致します。 以下追記です。 ------ 新しいIDの生成タイミングですが、EntityBeanのcreateメソッド内で生成する方がいいのかなと思いました。 定石等ありましたら、ご教授ください。 [ メッセージ編集済み 編集者: taiping 編集日時 2004-09-19 12:50 ] |
|
投稿日時: 2004-09-19 14:41
EJB デザインパターンに主キー生成方法に関するパターンが3つ紹介されています。
参考にしてみて下さい。 英文になりますが、ここで立ち読みできます。 |
|
投稿日時: 2004-09-19 17:19
ご返信、ありがとうございます。
英文の方でSequence Blocksを使ってみようと思い、実装がどうなっているのか分からなかったので、本屋へ行って紹介していただいた本を見たら、サンプルコードが載っていました。 ソースを覚えようとしたんですが・・・・・・無理だったんで買ってきました。 これからこの本を参考に実装してみます。 どうもありがとうございました。 |
|
投稿日時: 2004-09-21 11:18
こんにちわ。
私もEJBを使用した際、その辺で悩みました。 デザパタで挙げられている内容はどれも実装が めんどくさいですが、なぜわざわざそんなこと せにゃいかんのかと思っていました。 おそらく、コンポーネント性の確保というのが 原因なんだと思いますが、手間がかかりますよね。 私の場合は、シーケンス作成用EJBを一個作って DB(Oracle)からシーケンスIDを取得して返すなど しちゃってましたが、この場合EJBがOracle依存 になります。 また、各種ApServer(WebLogicとか)でもEJBを使用 する際のシーケンス取得機能みたいのが備わって いるのでそちらを使用することも可能です。 しかし、この場合もまたApServer依存になります。 |
1
