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

このエントリーをはてなブックマークに追加
KIVAってなに?
そういやCayenneって、スキーマ情報ぶっこぬきツールが付いてるのな。
まだ試してもいないけど、リレーション情報まで抜いてくれるのかな。
WOのEOModelerを参考にしてるようだからやってくれそうだけれど。。

HibernateのFAQでなぜGUIツールが付いてないのか?の問いに対して、
「GUIなどの補助ツールが必要なフレームワークってのは、
単体で使えないほど設計がタコいんだよ」
みたいな解答があったような気がする。
そりゃあそうだけど、やっぱ楽したいよ。

ってなもんで、jFaceDbcで基本情報抜いて、マッピングファイルの細かいところは
手作業でシコシコってパターンが一番多い。。。
>>912
俺は一日試しただけだけどリレーション情報抜いてくれるよ。
ただしインサート時の主キー生成の方法とかが何かと問題に
なるのは事実。

カスタマイズは一応できるようになってるけどまあ大体は
DBMS依存だしね。Oracleでは主キーを自動生成したいばあいは
シークエンスを使うのが一般的だけど……ってなあたりから
想像はつくでしょ。
主キー生成をGenericな実装にしようとするとSPと行ロックは
最低限欲しくなるけどこれまたDBMS依存の世界だからねー。
>>909
すげー、懐かしい名前だw
NASは今はどうなってるの?
>>908
Hibernate デュアルレイヤ・キャッシュ・アーキテクチャ
http://www.hibernate.org/4.html#A43
MappingFrameWorkって、いわゆるEJBとは違うんですか?
いわゆるEJBはMappingFrameworkのひとつ。
違うだろ。フレームワークと技術を比べるなよ。
フレームワークと技術の違いを述べよ (400字以内)
EJB は HYBERNATE や Torque と志向は同じでより大規模向けのもんと解釈してよいんでしょうか。
EJBの場合、MappingFrameworkはベースになる機能のひとつにすぎないから志向が同じとは言いがたい。
>>919
述べられないが、おれも>>918がただしいと思う。
EJBは、ビジネスコンポーネントを作るためのフレームワーク。(だったはず・・・)
ポータビリティーを指向してる点がちと違うのでは。(ポータビリティーなんて嘘だけど)
ORマッピングは、RDBのテーブルへアクセスする方法をOOっぽくするもの。

誕生したときの狙いはこれぐらい違うはずだけど、使い方次第では
同じにもなる。って感じかな?
EJBの実装はひとつのフレームワークだと思うんだが
分散オブジェクトを取り扱うための実装とビジネスオブジェクトの実装方法を提供してるんだし
そもそも、フレームワークって言葉の定義が、
いまや曖昧だよな。
もともと曖昧だよ。
分類のための言葉なんて、そんなもんだ。
かならず境界部分はあいまいになる。
>>919
技術 ⊃ フレームワーク
イギリス人とベッカムの違いを述べよ、っていうのと同じ無意味な質問だ。
SQL Maps なんかよさそ。チュートリアル読んだだけだけど、こんなのが欲しかった。

ttp://www.ibatis.com/common/sqlmaps2.html
フレームワークとは制御の反転だ、"Don't call me. I call you"だという単純化をすれば
EJBもフレームワーク。
これはフレームワークとライブラリの差のはなしか。
「もう、かけて来ないで。」
「……つぎは私からかけるから。」
>>930
お互いにかけあえる仲
ということは両方男ですね
Hollywood principle:
Don't call us, we'll call you.
俺用hibernateメモ。

hibernate.cfg.xmlは、SessionFactoryがbuildされる毎に読まれる。
hibernate.propertiesは、Hibernateのイニシャライズ時に1回だけ読まれる。
俺用hibernateメモ。

xbm.xmlは、作るのが死ぬほどめんどくさい。
>>934
*.hbm.xmlのこと?
Eclipse用のjFaceDbcプラグイン使うといいよ。
DBに接続して、hbm.xmlファイルにしたいテーブルを選択して、
Hibernateへ出力する命令を実行すると、基本的なマッピングファイルが
自動で作られるよ。
あとは、many-to-manyとかのリレーション情報とかが必要なら、そこから
手作業で修正とかすりゃいいし。

その点CayenneはCayenneModelerがあるから(゚д゚)ウマーだな。
でもCayenneは日本語情報が少なすぎ・・・
いいサイトある?
Cayenneってなんて読むの?
カイーネ?
939初期不良:04/05/11 06:39
検索するとすぐ引っかかるポルシェの cayenne は
カイエン、と書いてるね
amazonで検索すると、トウガラシを使った健康料理レシピ見たいのがひっかかる罠。
カイエンヌ
マスコットが、カイエンペッパーだよね。
オレンジ色のにくい奴。
943934:04/05/11 22:48
>>935
さんきゅ。

でも >928 を使った方が簡単そうな気がする。
dbutilsとはどちがうの
945934:04/05/12 22:17
>>944
dbutilはselectだけじゃないの?
>>945
すこしは調べてから書けよ。無知。
DBUtilsは結局SQLを書くことに変わりは無い。
本当に薄いラッパーなので、ResultSet取り出しが若干オブジェクティブになる程度。
その分速度は速いらしいが、DBUtilsの恩恵を受けるためにはQueryRunnerを使いまわしたり
色々面倒だしコード書き直しも沢山あるんで、俺は結局使わない事にした。

あと、無名クラスをガンガン書きまくるハメになるのでは読み辛くて嫌だ。
> あと、無名クラスをガンガン書きまくるハメになるのでは読み辛くて嫌だ。
RowProcessor書けばいいじゃん
すんげえ低レベルな話題だが、行ロックが欲しいようなケースってどう
してる?
いわゆるSELECT FOR UPDATEを使いたくなるようなケース。
参照→更新処理って実は大体こうだと思うんだけど。

JDBC2.0では更新可能なカーソルやカーソル名の取得が定義されちょるけど
ドライバによっては対応してないし、マッピングフレームワークとも
なると、正直不透明過ぎてわけわからん。
そもそも思いっ切りDBMS依存だけどデータ一貫性保証のためには絶対に必要、
という困り者。SPにできるんならSPで実装してしまうのが正しいのかな。
これもDBMS依存だけど。

それと、よく困るのは一意制約違反のエラー。これはシステムエラーでも
何でもないから、ちゃんとひろってアプリレベルでの対応が必要に
なるんだけど、SQLExceptionから一意制約違反であることを確かめる
には、DBMS毎のエラーメッセージのパースが必要になる。
Web+DBばっかりなんで、参照でロックしたことが無いなー。
いつもは最終更新時間か、レコード更新回数をフィールドに持たせてる。
>>950
ようするに、
参照(1)→ユーザがブラウザ側で手入力→更新(2)
で、(1)と(2)の間には無限大になり得るタイムラグがあるから、
その間のロックなんかできませんぜ、ということですよね。

無論その通りで、それゆえに(2)の時に再参照を行って、衝突があったかどうか
確認してるんだろうけど、その際の再参照→更新は
行ロックすべき、ですよね?
そこをatomicにできないんなら、論理的にはその間に衝突が発生する
可能性がある訳だから。
俺用hibernateメモ。

データベースアクセスは JDBC でしこしこが一番。
俺用hibernateメモ。

Criteriaクラスを使うよりも、HQL使ったほうが高速。
でも気持ち的にはCriteria使いたい。
>>944
selectの時に自動的にBeanに放り込んでくれる点はDBUtilと一緒だけど、
SQLMapsならinsert/update/deleteもBeanで自然に操作できる。
Hibernateって自動インクルメントのカラムを作らないと
SaveOrUpdateとかカスケードした更新とかって出来ないの?

Hibernateのためにテーブル設計するのもなって思うんだが
漏れは何か勘違いしてるだけかな。
>>955
Hibernateを利用したアプリに必要なテーブルを、XDoclet使って作ることもできるし、
既存テーブルをオブジェクトにマッピングさせてもいいし、どちらでも好きな方法とればいいじゃん。
マッピングの基本を見直してみるのもいいかも。
ttp://www.ozacc.com/library/java/hibernate/doc/html/or-mapping.html
Exadel - ORM Studio Hibernate Edition
ttp://www.exadel.com/products_ORMstudio.htm

私たちのユニークかつビジュアルな「ドラッグ&コネクト」アプローチで
Eclipseの実力を拡張する Exadel ORM Studio (Hibernate Edition)は、
HibernateのORMマッピングを用いて、あなたのアプリケーションに
より効率的な企業データベースアクセスをもたらします。

----

評価版あり。
958955:04/05/22 08:38
>>956
主キーが文字列型の場合ってgenerator classはassignedしか
使えないって思ってるんだけど、そもそもその考えが間違ってるのかな。
それかIdentifierGeneratorを実装するか。
その前に主キーが文字列型って時点で痛すぎか?・・・
>>955
uuidを使うとかは?