Java⇔RDBのMapping-F ..
[2ch|▼Menu]
486:デフォルトの名無しさん
06/11/12 08:41:06
>>485
今普通にそれでやってる。その他もろもろってDDLくらいしかなくね?
とりあえずHibernateのサイト見ればできるようになんだろ。

487:デフォルトの名無しさん
06/11/12 08:46:53
そういやDdlUtilsってアプリ組み込みDB初期化に便利そうなんで
早くリリースされないかなぁ。

488:デフォルトの名無しさん
06/11/18 13:49:05
sqlを見やすいようにフォーマットしてくれるクラスありますか?
ibatis、dbutils何でもいいのですが・・

489:デフォルトの名無しさん
06/11/19 11:55:54
一口に見易いと言っても好みがモロに出る所だと思うが、
とりあえずカンマの前後で改行入れる程度のものなら
自分ででっち上げる方が早い気もする。

490:デフォルトの名無しさん
06/11/19 14:14:39
そういうツールはいくらでもあるじゃん。

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

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

困った。


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

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

494:デフォルトの名無しさん
06/11/20 18:45:26
Hibernateなら整形出力あるんだけどね

495:デフォルトの名無しさん
06/11/20 18:57:18
>>492
その自称管理者がクソ

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

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

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

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

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

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

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

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

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


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

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

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

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

502:デフォルトの名無しさん
06/12/06 02:35:47
いつの間にか、Dbutils1.1が出てますね。

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

504:デフォルトの名無しさん
06/12/07 02:38:46
系統的にはiBatisみたいだね。
URLリンク(www.onjava.com)

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

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

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

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

>>506
なんでEJB?


508:デフォルトの名無しさん
06/12/07 23:24:00
分散を最初から考慮しているってのは確かに大きいな。

509:507
06/12/07 23:33:33
>>506
ちょっと喧嘩売ってるみたいな書き方になった…

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

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

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


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

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

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

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

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

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

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


514:デフォルトの名無しさん
06/12/12 18:52:08
ibatisでカスタムタグを作ることってできますか?

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

おれなら半日で作るね。



516:デフォルトの名無しさん
06/12/13 23:44:54
半日もかかるのか。イラネ。

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

518:デフォルトの名無しさん
06/12/14 01:45:16
ibatisの設定ファイルに書くタグのことじゃね?

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

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


520:デフォルトの名無しさん
06/12/15 12:26:48
>>519
スレ違いなので簡単に。詳細は別スレで語って。
URLリンク(www.nminoru.jp)


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4367日前に更新/149 KB
担当:undef