Java⇔RDBのMapping-Frameworkを語るThre Vol.3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG「Java⇔RDBのMapping-Frameworkを語るスレ Vol.2」
http://pc5.2ch.net/test/read.cgi/tech/1086315004/
「Java⇔RDBのMapping-Frameworkを語るスレ
ttp://pc5.2ch.net/test/read.cgi/tech/1049030272/
●まずは、基礎知識と技術選択指針など
[The Fundamentals of Mapping Objects to Relational Databases]
(RDBに対するオブジェクトマッピングの基礎(英語))
ttp://www.agiledata.org/essays/mappingObjects.html
[O/R-Mappingツールの比較サイト(英語)]
ttp://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison
[Catalog of Patterns of Enterprise Application Architecture]
ttp://www.martinfowler.com/eaaCatalog/
詳細は、>>2以降に。
0792デフォルトの名無しさん
2005/09/12(月) 10:12:01漏れはoc4j、Tomcat、OraDB、iBATIS、spring、JSFだけど
そんな症状見たことない。
つーか、トランザクション環境さえも晒さないで、答えを
得られるとでも思ってるの?
とりあえず>>791が書いてるようにログ見ろ。
ログレベルをdebugにするよろし。
0793デフォルトの名無しさん
2005/09/13(火) 00:02:50ログ見て一緒ならトランザクション隔離レベルかな?
oc4jのデフォルトってSerializableだったりすんの?
0794デフォルトの名無しさん
2005/09/13(火) 01:02:41多少問題が起こるのは予定調和ジャマイカ
0795デフォルトの名無しさん
2005/09/13(火) 22:35:39今hibernateを勉強してて、ちょっと思ったんけど
例えば
あるテーブルAとテーブルBが1:Nというmappingはできたんだけど
テーブルAとテーブルBが1:NでテーブルAとテーブルCが1:Nの場合に
テーブルAのmappingでone-to-manyの書き方が、いまいち分かりにくいんですが
この場合は、どう書けばいいのでしょうか?それともHQLかSQLを書くしかないのかな?
0796デフォルトの名無しさん
2005/09/13(火) 23:56:27>あるテーブルAとテーブルBが1:Nというmappingはできたんだけど
をテーブルCの分も書けばいいでない?
hbmをさらしたほうがはやいかも。
0797デフォルトの名無しさん
2005/09/14(水) 21:09:370799デフォルトの名無しさん
2005/09/14(水) 21:51:310800デフォルトの名無しさん
2005/09/14(水) 22:28:230801デフォルトの名無しさん
2005/09/15(木) 00:24:57昔、通勤途中の電車で「はじめてのC」本を読んでたときの
女子高生達の冷たい視線が懐かしい。
0802デフォルトの名無しさん
2005/09/15(木) 00:36:16【質問1/2】
table : GRP_INFO
GRP_ID (primary key)
GRP_NAME
table : USR_INFO
USR_ID (primary key)
USR_NAME
table : RLM_INFO
GRP_ID (foreign key -> GRP_INFO.GRP_ID)
USR_ID (foreign key -> USR_INFO.USR_ID)
((GRP_ID, USR_ID)でunique)
という、ユーザが複数のグループに登録できるリレーションを考えたとき、
その更新処理においてRLM_INFOのhbmを読み込む段で例外(MappingException)が出ます。
primary key がない場合はhbmを手書きでゴリゴリ修正しなければならないのでしょうか?
0803デフォルトの名無しさん
2005/09/15(木) 00:40:44table : PST_INFO (役職ID, 役職名)
PST_ID (primary key)
PST_NAME
table : USR_INFO に
PST_ID (foreign key -> PST_INFO.PST_ID) を追加。
尚ここはNULLでも可で、NULLの人はニートという設定で、
GRP_ID = x に属するユーザ情報はSQLで簡単に書けますが、
hibernate的に、外部結合を含んだこのような検索はどう実装すればよいでしょう?
ご協力をよろしくお願いします
0804デフォルトの名無しさん
2005/09/15(木) 00:46:47g.grp_name, u.usr_name, p.pst_name
from
grp_info g, rlm_info r, usr_info u, pst_info p
where
g.grp_id = x and
g.grp_id = r.grp_id and
r.usr_id = u.usr_id and
u.pst_id(+) = p.pst_id
;
0805デフォルトの名無しさん
2005/09/15(木) 03:26:51>その更新処理においてRLM_INFOのhbmを読み込む段で例外(MappingException)が出ます。
>primary key がない場合はhbmを手書きでゴリゴリ修正しなければならないのでしょうか?
<composite-id> を使えば ok。
でも一意なキーを作ったほうがらくかもね。
0806デフォルトの名無しさん
2005/09/15(木) 04:48:05どっちが設計的に優れてるんかな?
俺は後者の方が吉だと感じるんだが。
もっともORMとは直接関係ない話だが。
0807デフォルトの名無しさん
2005/09/15(木) 07:45:36<composite-id>
</composite-id>
こんなふうに空でできています。
ここに何か入った状態で自動生成させるには、
前工程(middlegenの設定?)のどこかで何かやるのか、
これから会社いって確認してきます。ありがとうございました。
>>806
確かに設計的にはそうかも。
でもこれで巻き取り対象の旧システムは
(+)使いまくりのニートな設計なのでしたorz
0808デフォルトの名無しさん
2005/09/15(木) 09:34:39?プラグインの中のjarを取り出せば、2.xの時と同じように使えるが
0809デフォルトの名無しさん
2005/09/15(木) 16:03:48ant タスクのパラメータとか結構変わってませんか?
2.1.8 の時の丸写しでサックリ試すつもりだったので
ちょっと面食らってしまってました。
でも落ち着いてみたら大した問題ではなかったでした、、、すいません。
早くalpha取れて欲しいです。
マッピングファイルを正にしたいんで。
0810デフォルトの名無しさん
2005/09/19(月) 19:36:14>昔、通勤途中の電車で「Cの達人」本を読んでたときの
>女子高生達の冷たい視線が懐かしい。
いまググッたらC言語ではなくCのみの本は
たのしいC
やさしいC
独習C
特に最後の奴は誤解を招きやすい・・・
気を付けろ!(アイツのような口調で)
0811デフォルトの名無しさん
2005/09/19(月) 21:19:53その前におっぱいさわったら出しちゃってたから、若いってスゴイんだなと改めて実感。もう20年近く前だがな………otz
この間の法事で久々にあったときはいい感じのババァになってて、コアダンプはきそうになりますた。
0812デフォルトの名無しさん
2005/09/19(月) 21:33:55コアダンプをゲロの意味で使うって事はASCII関係かIIJ関係の人か?
0813デフォルトの名無しさん
2005/09/20(火) 01:40:380814デフォルトの名無しさん
2005/09/22(木) 01:49:22たんなるじじいだろ。
0815デフォルトの名無しさん
2005/09/22(木) 07:27:340816デフォルトの名無しさん
2005/09/24(土) 14:20:15外部キーや参照整合制約が一切作られていない、DBがありまして、
そこからMiddlegenで、マッピングを自動生成しました。
DB上は関連が定義されていないのですが、自動生成されたマッピングを手で修正して
関連を追加してあげると、今後、自動生成できなくなってしまいます。
自動生成はしたいけど、マッピングに追記もしたい場合には、なにかいい方法はありますか?
0817デフォルトの名無しさん
2005/09/24(土) 16:59:23追加したテーブルだけ自動生成する
0818816
2005/09/24(土) 22:09:33DB側の修正が、テーブルが増えるだけならいいのですが、列が増えたりすることもあるので。
考えたら、DB側は、そんなに頻繁に変更されない(はず)ので、
初回だけ自動生成して、あとは自動生成せずに、手で変更分だけ修正と割り切ってもよいような気もします。
初回の全テーブルのマッピングを作ってくれるだけでも、相当楽なので。
0819デフォルトの名無しさん
2005/09/26(月) 18:29:38http://www.everes.net/145
………なんつーか、完璧な道具なんてどこにもありゃしないのに文句たらたらで
具体的な回避策も示さずにいるみっともないエンジニアという感じだな。
0820デフォルトの名無しさん
2005/09/26(月) 18:54:11(DBの複数対応が必要な場合ってそんなに多いか?)、
しかし現実はそーなってない、その場合世間を疑う前にまず自分を疑ってみるべきだと思うがどうか
0821デフォルトの名無しさん
2005/09/26(月) 18:54:13別に Hibernate マンセーじゃないけど、使えないのは Hibernate じゃなくて、
自分だという事に気が付いてないんじゃないかね。
そこに書いてある減少でハマったことはない。
0822821
2005/09/26(月) 18:56:020823デフォルトの名無しさん
2005/09/26(月) 19:27:212.xから3にバージョンアップした時にこれにははまったな。
あまりにも横暴な変更にワラタ
0824デフォルトの名無しさん
2005/09/26(月) 19:44:39解決策から目をそらす・・・
0825デフォルトの名無しさん
2005/09/26(月) 20:05:04多少の回避策はあげていても結局は使うな、使うなって連呼しているところに違和感を感じる。
0826デフォルトの名無しさん
2005/09/26(月) 20:11:380827デフォルトの名無しさん
2005/09/26(月) 21:23:36hibernate云々の問題じゃないような気がする
0828デフォルトの名無しさん
2005/09/26(月) 22:09:230829デフォルトの名無しさん
2005/09/26(月) 22:42:13技術力はある人なんだけどな、どうしてあぁも壊れてるんだか_| ̄|○|||
0830デフォルトの名無しさん
2005/09/26(月) 23:07:470831デフォルトの名無しさん
2005/09/27(火) 00:00:130832デフォルトの名無しさん
2005/09/29(木) 00:16:414のように自動更新したりとか、EJB1,2に引っ張られてる部分が多いし、無駄機能を実装するためにわかりにい部分も多い。
ま、大体の問題はどうにかなるし、ほかにまともな選択肢は少ないけど。
0833デフォルトの名無しさん
2005/09/29(木) 00:37:03単純にテーブル単位でデータ持ってきて更新ってときは便利だし
それ以外はDbUtilsあたりでいいやと思ってるのだが
0834デフォルトの名無しさん
2005/09/29(木) 00:42:350835デフォルトの名無しさん
2005/09/29(木) 07:05:27> 3もリストを毎回POJOに(しかも必要な関連のオブジェクトも含め)コピーするのは考えたくもありません。
> 解決策から目をそらす・・・
そこでDxOですよ
つうかこれでトラブるってことは、引っ張ってきたオブジェクトを
(RDB上のデータを更新する意図がないのに)触ってるってことだよな。
1000→1,000みたいな(MVCの方の)Viewでやるような編集を
引っ張ったオブジェクトをネタにやってて、
その編集結果をそのオブジェクトに上書き保存wとかやってる悪寒。
とはいえ、VBの時代じゃあるまいし、今時そんな設計ありえるのかね?
0836デフォルトの名無しさん
2005/09/29(木) 12:22:01hibernateのソースコード読んでみれ
元ネタにも触わって無くても更新されるって書いてあんべ
0837デフォルトの名無しさん
2005/09/29(木) 12:32:360838デフォルトの名無しさん
2005/09/29(木) 19:56:23結合し始めるは微妙?
0839デフォルトの名無しさん
2005/09/29(木) 21:04:40パフォーマンスもそんなに悪くない。キャッシュが有効なときはJDBCより良いケースがある。全体的にコードの見やすさが向上するよ。
0840デフォルトの名無しさん
2005/09/29(木) 22:35:49Hibernate が適用できそうにない案件ばっかで泣ける。
0841デフォルトの名無しさん
2005/09/30(金) 09:51:33こんなところまで来て宣伝すんな
2行目seaser関係ねぇしw
0842デフォルトの名無しさん
2005/09/30(金) 23:53:02そういうお前はちゃんとつかいこなせているのか?戦闘力はいくつぐらいだ?
0843デフォルトの名無しさん
2005/10/01(土) 01:10:17ソースのどこ読めばいい?
0844デフォルトの名無しさん
2005/10/03(月) 19:02:33RDBMSの方言を吸収するためのクラスを教えてくれ。
どうもマッピングでうまくいかねーorz
0845デフォルトの名無しさん
2005/10/03(月) 19:04:51参考文献はこいつ
っ ttp://www.techscore.com/tech/Others/Hibernate/02.html
0846デフォルトの名無しさん
2005/10/03(月) 19:25:09マニュアルみれば、すぐわかるじゃん。
http://www.hibernate.org/hib_docs/v3/reference/en/html/session-configuration.html#configuration-optional-dialects
ちなみにこれは3.0のやつで、2.1だとパッケージ名違うので注意。
0847デフォルトの名無しさん
2005/10/03(月) 22:06:39Re: hibernateを利用してはいけない5つのシチュエーション
0848デフォルトの名無しさん
2005/10/04(火) 10:29:290849デフォルトの名無しさん
2005/10/04(火) 18:38:49かわいそうに。今頃必死でevict()入れてるよw
0850デフォルトの名無しさん
2005/10/04(火) 21:59:200851デフォルトの名無しさん
2005/10/04(火) 22:35:34朝までにはk(1)さんが教えてくれるよ。
それにしてもスパム災難だな。
デルモヲチブログと比較されたせいで獄長の標的w
0852デフォルトの名無しさん
2005/10/05(水) 02:03:10Dirty Flagはないけど、プロパティの変更を調べてUpdateしてたはず。
プロパティいじってんのに勘違いして全Updateと思い込んでるんじゃ?
Hibernateの更新操作の挙動って、仮想メモリの考え方(File Mapping)に
近くて、その辺を知ってる人にとっては扱いやすいと思うんだけどなー。
あるエンティティの関連エンティティをLazyなプロパティ経由でアクセスした
タイミングで、セッション中に存在しなかったら自動的にストレージから読み込む。
セッション中のエンティティが更新された(Dirty)なら適当なタイミング(flushなど)
で自動的にストレージに反映される。
セッション -> 物理メモリ
エンティティ -> ページ
プロパティ操作 -> メモリアクセス
データベース -> マッピング先のストレージ
ほら、似てると思わない?
0853デフォルトの名無しさん
2005/10/05(水) 02:12:30書いた奴が永続化オブジェクトを分かってないということでFA?
0854デフォルトの名無しさん
2005/10/05(水) 18:43:29後はスパムがそれを認めるかどうかだな。
あるいは某Aのように緘黙症になるかw
0855デフォルトの名無しさん
2005/10/05(水) 23:50:010856デフォルトの名無しさん
2005/10/06(木) 01:05:480857デフォルトの名無しさん
2005/10/06(木) 08:51:36普通、問題が起こった瞬間にそこを疑いそうなもんだが・・・
0858デフォルトの名無しさん
2005/10/06(木) 12:49:070859デフォルトの名無しさん
2005/10/07(金) 03:09:060860デフォルトの名無しさん
2005/10/07(金) 03:12:240861デフォルトの名無しさん
2005/10/07(金) 08:00:320862デフォルトの名無しさん
2005/10/07(金) 09:33:52Criteriaしてるし
0863デフォルトの名無しさん
2005/10/07(金) 09:48:030864デフォルトの名無しさん
2005/10/07(金) 10:26:330865デフォルトの名無しさん
2005/10/07(金) 11:21:030866デフォルトの名無しさん
2005/10/07(金) 11:23:49ワラタ
0867デフォルトの名無しさん
2005/10/07(金) 12:01:47空気読んでないし
0868デフォルトの名無しさん
2005/10/07(金) 12:41:00いや、スパムもブログの賑わいと言うし、一躍有名ブログ化はおいしいw
てか、獄長を起こした功績が大きい。久しぶりのJavaネタに俺様ウットリ。
海老の画像を全部アマゾンのアフィリンクに置き換えてJavaネタを書け
と言いたいw
0869デフォルトの名無しさん
2005/10/07(金) 19:05:190870デフォルトの名無しさん
2005/10/07(金) 20:28:29エビ「大人気ない」
エビ「その粘着ぶりは大人気ない」
koichik「おっ、クリテリアがいる」
エビ「人のハナシ聞いてないし…」
エビ「化粧してるし」
0871デフォルトの名無しさん
2005/10/07(金) 21:39:340872デフォルトの名無しさん
2005/10/07(金) 21:46:15首尾一貫というか、>>829に深く同意
0873デフォルトの名無しさん
2005/10/07(金) 21:53:28ありがとう、今気がついた・・・
0874デフォルトの名無しさん
2005/10/07(金) 23:30:39「Prologしてるし」
がいいな。
0875デフォルトの名無しさん
2005/10/08(土) 00:04:310876デフォルトの名無しさん
2005/10/08(土) 00:47:32大人気ないw
0877デフォルトの名無しさん
2005/10/08(土) 03:34:280878デフォルトの名無しさん
2005/10/08(土) 03:47:58ヒント:トラックバック
0879デフォルトの名無しさん
2005/10/08(土) 07:25:190880デフォルトの名無しさん
2005/10/08(土) 12:51:05あそこに取り上げられなければ( ´_ゝ`)フーンで終わったのに。
0881デフォルトの名無しさん
2005/10/08(土) 13:34:11ガンガン使いまくってるんですけど。
更新系の処理後は、たいがいリダイレクトしちゃうんで、
プレゼンテーション層ではDBからデータひろってきて表示するだけ。
どのみち別セッションだし、ガーッてセッション開きっぱなしです。
まずいの?
0882デフォルトの名無しさん
2005/10/08(土) 13:37:32・大口を叩く
・オレンジニュースに取り上げられる
・2chに晒される
・獄長に見つかる
・コテンパン
0883デフォルトの名無しさん
2005/10/08(土) 13:44:56まずいと思うならまずいし、思わないならまずくない。
作るものとか考え方によるんじゃない?
0884デフォルトの名無しさん
2005/10/08(土) 13:56:19> Open Session in View って、そんなに避けなきゃいけないものですか?
困ってなければいんじゃね?
> 更新系の処理後は、たいがいリダイレクトしちゃうんで、
こういうのってよくあるのか?
> プレゼンテーション層ではDBからデータひろってきて表示するだけ。
> どのみち別セッションだし、ガーッてセッション開きっぱなしです。
それだと更新とその結果表示で同じDBアクセスしたりしないのか?
0885デフォルトの名無しさん
2005/10/08(土) 14:04:58>> 更新系の処理後は、たいがいリダイレクトしちゃうんで、
>
>こういうのってよくあるのか?
Redirect after post とか Redirect after submit とかいうパターンです。
ttp://www.theserverside.com/articles/article.tss?l=RedirectAfterPost
ある程度F5よけになります。
>> プレゼンテーション層ではDBからデータひろってきて表示するだけ。
>> どのみち別セッションだし、ガーッてセッション開きっぱなしです。
>
> それだと更新とその結果表示で同じDBアクセスしたりしないのか?
アクセスします。
あきらかに無駄ですが、 redirect after submit するメリットを優先しています。
0886デフォルトの名無しさん
2005/10/08(土) 14:26:40> ある程度F5よけになります。
履歴上は全て表示系のURLになるわけか。
submitボタン連打にも有効?
> あきらかに無駄ですが、 redirect after submit するメリットを優先しています。
それだと俺んとこでは苦しいな。
0887デフォルトの名無しさん
2005/10/09(日) 19:09:57簡単に言うと、どういう処理方法なんですか?教えてエロい人
Hibernate のSessionを生成するコストってそんなに大きいだろうか。
Sessionの生存期間が長くなればなるほどいろんな問題を生まないだろうか。
オレのマグナムをてめぇの汚ぇケツにブチこんでションベンぶちまけてやるぜ。
自分はSessionを生成したらできるだけ速やかに閉じるようにしてます。
一回のrequest-responseループでSessionを使い棄てるようなイメージで。。
大きな問題には遭遇してないですよ。
0888デフォルトの名無しさん
2005/10/09(日) 20:53:59OpenSessionInViewとは直接関係ない話。
HTMLフォームをサブミットしたリクエストでDBを更新した後
表示用のURLにリダイレクトして、そのリクエストでDBを参照して
画面表示する。
そうするとブラウザでF5しても表示用のURLがリクエストされるから
二重更新を回避できるのがメリットみたいだな。
それぞれのリクエストでは別々のSessionを使う。
>881はたまたまそのSessionをOpenSessionInViewしてる。
0889デフォルトの名無しさん
2005/10/09(日) 23:07:24指定したテーブルが存在しないって言われちゃう。MiddlegenIDE(だっけ?)を使ってみても、対象の
テーブル一覧に何も出てこない。ネットで検索すると、同現象に遭遇してる人がちらほら居るんだけど
誰かMiddlegenでOracle用のマッピング作れてる人いる?
0890デフォルトの名無しさん
2005/10/10(月) 00:21:44スキーマ名指定の大文字/小文字の違いとか。
0891デフォルトの名無しさん
2005/10/11(火) 10:53:24Hibernate 2の頃にあったHibernateToolsにはあったんだけど、、消えて無くなった?
皆さんどうしてますー?
0892デフォルトの名無しさん
2005/10/11(火) 11:03:39>ibatisでstruts見たいに、#formbean.innerbean.fireld#みたいに指定できないですか?
普通にできてますけど・・・
失敗すんの?
■ このスレッドは過去ログ倉庫に格納されています