[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 02/24 23:25 / Filesize : 149 KB / Number-of Response : 521
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Java⇔RDBのMapping-Frameworkを語るスレ Vol.4



1 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 11:54:44 ]
前スレ:
 Java⇔RDBのMapping-Frameworkを語るThre Vol.3
 ttp://pc8.2ch.net/test/read.cgi/tech/1090653286/
過去スレ:
 「Java⇔RDBのMapping-Frameworkを語るスレ Vol.2」(落ち)
 ttp://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 (PoEAA)]
  ttp://www.martinfowler.com/eaaCatalog/

あとは>>2以降


490 名前:デフォルトの名無しさん mailto:sage [2006/11/19(日) 14:14:39 ]
そういうツールはいくらでもあるじゃん。

491 名前:デフォルトの名無しさん [2006/11/20(月) 04:29:31 ]
MySQLにテーブルをいくつか作って、
Hibernate Toolsを使って.hbm.xmlと.javaを自動生成させた。

one-to-oneになって欲しい部分がone-to-manyになっている。

困った。


492 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 10:00:20 ]
>>490
すいません。ツールは知っているのですが、管理者からPG側から整形済みをログで吐き出せといわれていまして・・・

493 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 10:16:39 ]
管理者ならログ整形するツールくらい用意しろよと言い返せ。

494 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 18:45:26 ]
Hibernateなら整形出力あるんだけどね

495 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 18:57:18 ]
>>492
その自称管理者がクソ

496 名前:デフォルトの名無しさん [2006/11/27(月) 01:29:48 ]
WebアプリでHibernateを使うとき、updateて普通どうやるんですか?
マニュアルとか見ると、一般的なやり方として
load -> データ変更 -> update
しかないみたいなんですがWebアプリだとloadとupdateの間に
画面遷移が入るのが普通ですよね.

・最初にloadしたデータをセッションにでも入れておく
・updateのときにもういっかいloadする
・loadはせず、自分でオブジェクトを生成してidや全てのプロパティを手動で設定

どんなふうにやるもんなのでしょうか.

497 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 01:33:40 ]
・最初にloadしたデータをセッションにでも入れておく
の後、データを再度トランザクションにくくりつける。
・updateのときにもういっかいloadする
は、勝手にやってくれる。

498 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 01:38:35 ]
>>496
前の画面で取得したEntityをsessionなどに保持しておいて
Session(Hibernate Core)使うならupdate
EntityManager(Hibernate EntityManager)使うならmerge

手動で再loadとかすると、排他制御をHibernateに任せられなくなるので
お勧めできない

ちなみに、同一トランザクション上なら、取得したEntityは
値を変えるだけでUPDATEされるので、updateメソッド使う必要はない
ここを間違ってupdateメソッド使うかのように書いてる本が多いので、騙されないように



499 名前:496 [2006/11/27(月) 03:00:40 ]
ありがとうございます.
セッション管理がいやなので更新時再loadでやろうと思ってました...

ブラウザのウインドウをいくつも開いて同時に編集というのを
許可する場合はどうするんでしょうか?
entityの種類とidごとに別のキーでセッションに入れたりして、
セッション内に作業中entityをどんどん保存/updateしていく
という感じになるんでしょうか.


500 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 06:50:21 ]
ログを常時監視してる場合も有るから、人間が直接読めるってのは重要な場合も有るかと。

まあ要求するのは良いが、それならおまいが管理までやれって返されるだけだよ(w
やぶ蛇にならないようにガンガレ。

501 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 09:13:01 ]
ログを監視する場合はむしろSQLを整形して吐かれるのは嫌だと思うんだけどなぁ。
ログは、基本一行で全部出して欲しい派。

正規表現で取り出しやすくなるし。

502 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 02:35:47 ]
いつの間にか、Dbutils1.1が出てますね。

503 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 02:23:14 ]
Java6のJDBC4.0使った簡易O/Rマッピングってどんな感じですかね?

504 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 02:38:46 ]
系統的にはiBatisみたいだね。
www.onjava.com/pub/a/onjava/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html

505 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 22:45:10 ]
>>498
いつも思うんだけど、Hibernateで排他制御を任せると、
複数サーバでの運用って事実上無理にならない?

JavaVM1つでしか動きを保障できないようなフレームワークが
なぜこんなに流行るのかわからない。

506 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 22:58:32 ]
複数サーバの並列運用が必要な案件がそんなにないからじゃないかと。
大規模案件はやっぱりEJBの出番なんでしょう。

507 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 23:18:00 ]
>>505
普通にHibernate経由でDBロック取ればいいじゃん。
API提供されてるし。

>>506
なんでEJB?


508 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 23:24:00 ]
分散を最初から考慮しているってのは確かに大きいな。



509 名前:507 mailto:sage [2006/12/07(木) 23:33:33 ]
>>506
ちょっと喧嘩売ってるみたいな書き方になった…

補足すると、そもそも並列稼動の実装ってかなり設計に依存するから
安易に大規模案件=EJBを持ち出す意味がわかんないって話。

単純なスケールアウトの話で、VMをまたいだキャッシュの同期を
意図してたならHibernateでもいくつかサポートしてるキャッシュ実装があるよ。
※Coherenceとか

ま、JBossのEJBって話だったら別に変わんないか。


510 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 00:27:16 ]
>>505
Hibernateの排他制御は基本的に楽観的排他で、
UPDATE文発行するときに、検索条件に主キー+バージョンカラムの値をつけ、
UPDATEの結果が0だったら排他エラーにするものだよ
同期を取っているのはあくまでもDBで、JVMは関係ないと思うけど

2次キャッシュに対する更新は、たしかに複数サーバでの運用が問題になるが
そんなときはクラスタ対応のJBoss TreeCacheを使えばいい

511 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 01:02:00 ]
>>510
へー、そうなのか。勉強になった。
どちらにせよ、最近は状態を頑張って各ノードで通信して同期するより、
なるべく状態非依存にしてスケールアップする方向に進んでるから、
Hibernateの挙動はあまりいくないと思う。

512 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 01:33:17 ]
>>511
参考までに聞きたいのだが、状態を持たない場合、複数画面の排他制御ってどうやってやるのが普通なの?
主キー+バージョン値だけを保持して、バージョン値も条件に入れて再SELECTとか?
ただこの場合、関連するEntityを同時に再SELECTする場合、全部のバージョン値を保持しなきゃいけなくなるよね
自分もHibernate使っていたとき迷ったのだが、結局HttpSessionに保持してmerge以外に良い方法を思いつかなかった

513 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 02:15:47 ]
>>511
Hibernateの挙動というよりは、単に2次キャッシュを使わなければ良いだけでは?
OptimisticLockも2次キャッシュ同様にデフォルトでは有効でないから
そこに文句をつけるのは違うと思う。

> どちらにせよ、最近は状態を頑張って各ノードで通信して同期するより、
> なるべく状態非依存にしてスケールアップする方向に進んでるから、

これ、そうなの?クラスタ系プロダクトの信頼度が上がってくるのはこれからじゃないのかな。
あと、下のケースはスケールアウトと間違えてない?


514 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 18:52:08 ]
ibatisでカスタムタグを作ることってできますか?

515 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 23:35:57 ]
>>514
OpenSessionInViewパターン的な仕組みとやりとりするカスタムタグを
作るってことなら、そんなに悩まずできるんじゃないの?
iBatisだろうとHibernateだろうと生Jdbcだろうと。

おれなら半日で作るね。



516 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 23:44:54 ]
半日もかかるのか。イラネ。

517 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 00:06:28 ]
タグ作って、テストして、プロジェクトの他メンバーに仕様を伝えるためのドキュメント作って・・・
としていたら半日なんてあっという間。

518 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 01:45:16 ]
ibatisの設定ファイルに書くタグのことじゃね?



519 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 11:03:54 ]
gcの対象って、インスタンスだけじゃなくてクラスも対象なんですか?
クラスに定義してあるメソッドの実行コードもメモリから消えちゃう?

Cをやっていたとき、実行コードはメモリのtextにロードされるから、
textエリアは書込み禁止なはずなので・・・、javaでは実行コードはtextに書かないのかな


520 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 12:26:48 ]
>>519
スレ違いなので簡単に。詳細は別スレで語って。
ttp://www.nminoru.jp/~nminoru/java/class_unloading.html






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<149KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef