新規で追加されたViewに対して検索を行う方法について

22 views
Skip to first unread message

ryo akazaki

unread,
Dec 31, 2016, 6:49:35 AM12/31/16
to DBFluteユーザの集い
初めて投稿させて頂きます。
赤崎と申します。

今回同僚のヘルプでDBFluteの案件を手伝うことになったのですが、
初めてDBFluteを扱ったため知識と経験が全く足りていない状況です。

【問題】
いままで対応してきた画面では普通のAテーブルから取得といった方法で対応してきたのですが、
新規で追加されたView(Aテーブル+Bテーブル)から値を取得する必要がでてきました。

@Resource
private MemberCardBhv memberCardBhv;

普通検索処理を行う場合には上記のようなBhvクラス?を用意する必要があると思っているのですが、
このクラスの作成方法がわからず困っております。

どのようにしたらViewから検索処理を行えるようになるのか?
もし対応方法などをご存知の方がいらっしゃれば何卒ご教授頂ければと存じます。


kubo

unread,
Dec 31, 2016, 6:58:31 AM12/31/16
to DBFluteユーザの集い
jfluteです

赤崎さん、こんばんは

なるほど、テーブルではなく、
すでにAとBが結合済みのVIEWオブジェクトがDBになるわけですね。

そもそも「Bhvクラス」(Behaviorを省略してBhv)は、
データベースの情報から自動生成されます。
こちらのページを読んで見てください。

// 自動生成ドリブン
http://dbflute.seasar.org/ja/introduction/gendriven.html

なので、
新しくVIEWをデータベースに追加したのであれば、
(すでにデータベース上にVIEWが存在するのであれば)
もう一度、DBFluteでクラスを自動生成をし直せば、
そのVIEWに対応するBhvクラスが自動生成されます。

クラスの自動生成は、
DBFluteクライアント(dbflute_xxxディレクトリ)の、
manage.bat (.sh) を叩いて、2 (regenerate) を叩きます。


そもそもDB変更をしたときは、
以下のページを参考にしてください。

// DB変更が発生したら
http://dbflute.seasar.org/ja/manual/function/generator/task/dbchange.html

ReplaceSchemaは使ってるケースと
使ってないケースがあります。
そちらの開発で利用されているかどうかは、
同僚の方に聞いてみてください。

ryo akazaki

unread,
Dec 31, 2016, 7:36:20 AM12/31/16
to DBFluteユーザの集い
赤崎です。

jfluteさん 返信ありがとうございます。

>クラスの自動生成は、 
>DBFluteクライアント(dbflute_xxxディレクトリ)の、 
>manage.bat (.sh) を叩いて、2 (regenerate) を叩きます。 

先日DBの変更があったためmanage.bat (.sh) を叩いて、
0→yでDBの再作成を行ったのですがそれだけではダメだったのですね。

これから提示してくださった方法でクラスの再作成を実行してみます!

kubo

unread,
Dec 31, 2016, 7:44:24 AM12/31/16
to DBFluteユーザの集い
jfluteです

> 先日DBの変更があったためmanage.bat (.sh) を叩いて、
> 0→yでDBの再作成を行ったのですがそれだけではダメだったのですね。

0 番は、ReplaceSchema です。

// ReplaceSchema
http://dbflute.seasar.org/ja/manual/function/generator/task/replaceschema/

こちらは「ローカルの開発用DBを構築する」だけのタスクです。
なので、Javaのクラスに対しては何もしません。DBだけを作ります。

なので、DB (厳密にはDDL) を変更した場合は、

1. ReplaceSchemaタスクで DB を最新の状態に
2. 他の generate 系のタスクでJavaクラスを最新の状態に(自動生成)

という流れになります。

ちなみに、複数人で開発されていますでしょうか?
チーム開発の場合、Javaクラスの自動生成は誰か一人がやって、
gitにコミットしてしまえばみんなと共有できるので、
全員がやる必要ありません。
(ReplaceSchemaは、ローカルDBなので全員やります)

チームの方がいらっしゃるのであれば、
「自分が自動生成しちゃっていい?」
って一言言ってからにしてください。
(みんなでやるとコンフリクトになっちゃう可能性があるので)

ryo akazaki

unread,
Dec 31, 2016, 8:21:48 AM12/31/16
to DBFluteユーザの集い
赤崎です。

 
>DB (厳密にはDDL) を変更した場合は、 
>1. ReplaceSchemaタスクで DB を最新の状態に 
>2. 他の generate 系のタスクでJavaクラスを最新の状態に(自動生成) 
>という流れになります。 

なるほど、大変勉強になります。
先日会社の者から聞いた方法は1番だけでしたので結果としてDBのみ最新の状態となってしまったようです。
全てのソースをマージ→最新化した状態でサーバ側でJavaクラスファイルの自動生成を行いたいと思います。
Reply all
Reply to author
Forward
0 new messages