Java⇔RDBのMapping-Frameworkを語るスレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG[Torque]
http://db.apache.org/torque/
http://homepage1.nifty.com/kingyoshi/computer/jakarta/torque.htm
[HYBERNATE]
http://hibernate.bluemars.net/1.html
[CasterJDO]
http://www.castor.org/jdo.html
http://www-6.ibm.com/jp/developerworks/java/021025/j_j-castor.html
[ObJectRelationalBridge (OJB)]
http://www.terra-intl.com/jakarta/ojb/
●コネクション・プーリング
[Jakarta Commons DBCP]
http://jakarta.apache.org/commons/dbcp/
(Jakarta Commons DBCPを使ってみよう。)
http://taka-2.com/jclass/DBCP/
(DBCP利用法 from "『カモン!Commons!』 Jakarta Commonsを使ってスキルアップ" (2002/09))
http://www.mobster.jp/wiki/index.jsp?pid=Commons#i10
0552デフォルトの名無しさん
NGNGマジで!?
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNGhttp://hibernate.bluemars.net/136.html
0560デフォルトの名無しさん
NGNGこれって喜んでいいの?
悲しんだらいいの?
JBossは使ってなくて、Hibernateは使ってるんだけど。
0561デフォルトの名無しさん
NGNG各フレームワーク
俺様フレームワークはオナニーだな。一生てめえが面倒見ろよ
Torqueはださい、つかいづらい。でも流行ってるからつかおうぜ
HibernateはJDOだから将来性あり。でもそれなりに癖あるぜ
その他 なんかよくわかんなーい。でもそんなマイナーなものつかわんでいいじゃん
設計とか
Viewで外部結合はなんとしろ。じゃないとほとんどのフレームワークむりぽ
OOとRDBは相容れないもんだから、頑固にOOは頭硬いYO
SQLをソースに埋め込む埋め込まないは個人の経験によりけり
チームメンバーは自分と同スキルでないのでそこんとこよろしく
総評
この先JDOが主流になる予感。癖のあるフレームワークでガチガチになるなよ
個人的な意見
全然わかんないんだけどSunJDOがそのうちSDKに組み込まれんじゃないの?
だったらそれに準拠してるの使うかそれまではJDBCをちょろっとラッピングしてればいいのでは?
デザインパターンとかでそういうのあればいいすねぇ
保守age
0562デフォルトの名無しさん
NGNGHibernateはJDOの実装ではないと思うのだが
あと、JDO1.0はORMとしてはかなり萎える面が多いと思うのだが気のせいだろうか?
ORMだったら当り前っぽい機能でも「実装依存」扱いになっているものが多くないか?
JDO2.0でそこら辺もうちょっと考えてくれる方向性っぽいのでそれには期待してたいと
思っているけど
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNG#いや、マジでさわってみてって。業務で使わないにせよ。
0566デフォルトの名無しさん
NGNGWebObjectsって工数は削減できそうなんだけど、例えば結果に
含まれる行が大量になるデータの扱いとかが苦手という話なので
使う気にならん。性能的にどうなの?
WebObjectsって、ページデザインをデザイナーが担当するような案件の
場合にすごい作業しにくそうなんだけど、EOF部分だけをStrutsや
Tapestryなどのフレームワークと組み合わせて使えます?
0567デフォルトの名無しさん
NGNGあー、大量データはきついかもねぇ。
EOFといっても所詮はキャッシュだからねぇ。
> EOF部分だけをStrutsやTapestryなどのフレームワークと組み合わせて使えます?
PureJavaだから、使えると思うよ。やったことないけど。
でも、WOF(WOで使うWeb周りのフレームワーク)を使わないように気をつけないとね。
でも、すみません、Tapestryはしらない。WOの影響を受けてつくったらしいとかいううわさは聞くけど。
0568リカバリ
NGNGデジカメで撮った写真、動画のデータ及びexcel等の重要なデータを誤って消してしまったのです。
出来ればフリーソフトであるといいのだけれど・・・
0570デフォルトの名無しさん
NGNGあったとして、INSERTしたと同時にその自動付加されたidの取得ってどうすれば
よいでしょうか?
ご教授お願いいたしまそ。
0571デフォルトの名無しさん
NGNGもうtorqueは使わなくなったので間違ってるかもしれんけど、
dataObject.save();
Integer id = (Integer)dataObject.getPrimaryKey();
みたいな感じでどう?
0572デフォルトの名無しさん
NGNGさんくす!一度やってみます^^
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGこのスレ上げる意味って何よ。
DB板も悲惨じゃない。
0575デフォルトの名無しさん
NGNGモレモナー
0576デフォルトの名無しさん
NGNGTorqueかけて行くぞ!
0577デフォルトの名無しさん
NGNG俺の技術のせいかもしれないけど。
0578デフォルトの名無しさん
NGNGなんで自前で作らなきゃいけないんだよぉ・・・
途中から訳ワカメ状態に陥ってただのDBアクセッサになりつつある罠。
漏前ら自前で作った(事がある人で)RDBフレームワーク or アクセッサ設計晒してもらえます?
自分は個人的にC++のDBTools好きだったんで、それに近い感じで作ってます。
0579デフォルトの名無しさん
NGNG必要なときにデータをとってきて必要なときにインスタンスを作る。それ以外方針なんてありようがない。設計ったってそのときどきによるよ。
0580デフォルトの名無しさん
NGNG却下された理由って何よ。
他のフレームワークは提案したのか?
0581デフォルトの名無しさん
NGNGTorque はWHERE句の条件の順序を指定できないぞ。
INDEX利かんぞ。それでもいいのか?
0582デフォルトの名無しさん
NGNGINDEX利かない?
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNGfrom句じゃなくてwhere句の記述順序を特定できないと
困るDBMSってなんだっけ?
0585デフォルトの名無しさん
NGNGふつうWhere句は後ろから評価するじゃない。
だから効率いい評価を逆順で書くけど、そりができないってことでしょ
0586デフォルトの名無しさん
NGNG普通のDBMSは後ろから評価するものなんですか?
OracleもDB2もSQLServerもPostgreSQLもMySQLも、みんなそうですか?
0587デフォルトの名無しさん
NGNGネタに釣られるなよ。
そんなことはない。
今時のRDBMSはけっこう賢い。
0588デフォルトの名無しさん
NGNGまじですか?結構意識して書いてたのに
oracleだと私が使ったことあるのは8.0.6〜8.1.7なんだけど、いつぐらいからそうだったんですかね?
0589デフォルトの名無しさん
NGNG高い(=falseになりやすい)フィールド条件が先に評価されるよう記述
した方が効率が良いということかな?
実行計画の決定に比べたら屁みたいなもんなんで、気にしたことが
なかった。
0590デフォルトの名無しさん
NGNGDBMSによるけどじゅうようだよ。
データによって偏りがある場合、それで最初に絞ったほうが早いかどうかって。
最初に評価されるはずの条件でデータが一気に絞れたり、それにたいしてINDEXを使えるかとか。
0591デフォルトの名無しさん
NGNGインデクスが使えるかどうかってのはたしかにすごく重要だ。
けど、それがwhere句の記述順序で決まるようなアホなDBMSは
いまどき存在しないだろう。
sequencial scan で選択条件が複数ある場合にちょっと効くかな?
という程度じゃないか?
0592デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/0321127420/qid=1066816704/sr=1-2/ref=sr_1_18_2/249-7197900-6499567
↑読んだ人いませんか?非常に気になっています。
データベースマッピングについての記述はどのようなものでしょうか?
SQL文を直接書くことを前提にした設計でしょうか?
それとも、TorqueやBC4Jなどのフレームワークを使用した設計のパターンでしょうか?
私は接続に関するオブジェクトをクラス間で渡し合い、
しっくりこない設計をしているのですがきれいなパターンを知りたいと思っています。
0593デフォルトの名無しさん
NGNGよみました。
2/3くらいがORマッピングの話だったかと。
紹介されているパターンについては著者のサイトを参照してください。
http://www.martinfowler.com/eaaCatalog/
SQLを直接書くパターンから抽象的なマッピングフレームワークのパターンまで
いろいろとりそろっています。
torque, bc4jなどの特定のフレームワークを利用した解説はされていません。
どちらかというと、そういったフレームワークをつくるときに問題となる事項や
利用できるデザインパターンについての解説って感じです。
接続に関するオブジェクト云々に関しては、
今ホットな話題のIoCなコンテナである
Spring Frameworkとかを調べてみるのもいいんではないでしょうか。
0594593
NGNGレスありがとうございます。
> torque, bc4jなどの特定のフレームワークを利用した解説はされていません。
> どちらかというと、そういったフレームワークをつくるときに問題となる事項や
> 利用できるデザインパターンについての解説って感じです。
そうなんですか。
よくわかりました。私は一からそのようなフレームワークを作る気はなく
既存のものを利用したいので、この本はあまりやくだたないでしょうか?
あるいは、フレームワークを深く理解するためにもそれなりに有益でしょうか?
>
> 接続に関するオブジェクト云々に関しては、
> 今ホットな話題のIoCなコンテナである
> Spring Frameworkとかを調べてみるのもいいんではないでしょうか。
IoCもSpring Frameworkもしりませんでした。調べてみます。
どうもありがとう。
0595デフォルトの名無しさん
NGNGOracleはそうなわけだが。。
0596デフォルトの名無しさん
NGNGんなアホな。PostgreSQLだってもっとマシなプランナ持ってるよ。
記述順序が効くとすれば、どの条件でもインデクスが使われないか、
CBOを使っていてかつどの条件でもインデクスが使える場合だろう。
0597デフォルトの名無しさん
NGNG設計思想が違うだろうから単純比較はできないんじゃない?
漏れの記憶ではOracle8iとかではWHERE句に書く順序は気にしてたはず。
オプティマイザがルールベースだったかコストベースだったかは覚えてないけど。
0598596
NGNG間違えた。CBOじゃなくてRBO。
>>597
少なくともRBOの場合、インデクスが使える条件は使えない条件より
優先されるから、そんなことはないはず。記述順序で決まるとすれば、
どちらもコスト的に等価とみなされた場合だけ。
逆にそれらがみんな記述順序で決まるとすれば、オプティマイザの
仕事がなくなってしまうし。
0600デフォルトの名無しさん
NGNGOOでは普通クラス間の関連で表現するよな。
一方のクラスが片一のクラスのインスタンスを包含する場合、
このスレで取り上げられたJDOやらなんちゃらのFrameWorkでは、
どうやってそれを実現してるんだろう?
(オブジェクトのシリアル値をテーブルに含めるとか?)
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNGCayenneを使ってみれ
http://objectstyle.org/cayenne/
0603デフォルトの名無しさん
NGNG興味あるなー。詳しく説明して。
Tapestryと組み合わせたらWOもどきの出来上がり?
0604デフォルトの名無しさん
NGNGこの手のツールを使ったことが無かったんだが興味があったんで落としてみたが、
結構便利そうね。DBMSのスキーマ情報のリバースとか、DAO層のJavaクラスを
自動生成してくれたりとか、リレーションをリバース時にも自動で解決して
くれたりとか。欲しい機能は揃ってる感じ。
ちょっと気になったのが、PKのGenerationまわり。
従業員番号やISBNみたいに、エンティティとして意味のある値がPKでない
場合、DBMSの機能で自動生成させることが実際には多いと思うのだが、
その方法ってモロにDBMS依存だよな。Oracleのシークエンスには対応
してくれてるみたいなんだけど、MSSQLのIDENTITY列には対応できなさそうな
気が。PKの値が与えられていない場合は自分で値を捏造しちゃおうと
するみたいだしな。
この辺、別にCayenneに限らない問題と思うのだが、一般的にはどう
解決されてるのかしら。そういうDB設計は、避ける?
0605デフォルトの名無しさん
NGNGJDOも2.0からはPK生成を対応するみたいです。
実装方式に関しては、不明ですが。
0606604
NGNGCayenneでのGenericなPK生成の方式は、テーブルにシード値を格納しておいて、
それをインクリメントしながら生成するという単純な遣り方。
後は個別のDBMS向けに、もっとマシな実装が用意されている場合もある。
ま、この方式にしろ、行ロックは必須だし、DBMS依存性はやはり残る。
柔軟性という意味では、アプリケーションレベルではDBMS毎のアダプタ実装を
プラグインできるのだが、本来はもう少し細かくテーブル単位でカスタマイズ
したいところだ。Oracleのシークエンスにのみ、個々のテーブル単位での
カスタマイズに対応しているようなんだけれども。
0607デフォルトの名無しさん
NGNG例えばTorqueだとID用テーブルを作ってそこでSEQUENCEのようなことをする(こともできる)。
606と同じだね。
MySQLの場合の例
CREATE TABLE ID_TABLE
(
ID_TABLE_ID INTEGER NOT NULL,
TABLE_NAME VARCHAR (255) NOT NULL,
NEXT_ID INTEGER,
QUANTITY INTEGER,
PRIMARY KEY(ID_TABLE_ID),
UNIQUE (TABLE_NAME)
);
で、これを管理するためのクラスもある。
多分他も同じようなものじゃないかな。
自分で作るとしてもこうするし。
0608デフォルトの名無しさん
NGNGランタイムのコード(Peer)を読んでたら、doUpdateとかで最後にTransaction.commit()
みたいになってたんですけど、これって、オプションかなんかではずせますか?
複数テーブルの更新でまとめてコミットするような処理って無問題?
0609デフォルトの名無しさん
NGNGMacOSXとSolarisだけしか使えないのかなー。
0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNGdoUpdate(criteria, connection)の方を使って、connectionのautoCommitを
falseにしておけばできると思います。
0612デフォルトの名無しさん
NGNG質問です。
Oracle の JDBC ドライバは、OCI(type2)と thin(type4)の両方がありますが、
Oracle 以外で type2 ドライバってあるの?
postgresql.jar とか MySQL 用って、みんな type4 だよね?
これらふたつや DB2 用のドライバに、type2 ってあるのですか?
0613デフォルトの名無しさん
NGNGDB2にはあるぞ。
↓ちょっと古いけど・・・
www-6.ibm.com/jp/software/data/developer/library/techdoc/javappli.html
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGJakarta Commons-DbUtils
http://jakarta.apache.org/site/news.html#20031111.1
http://jakarta.apache.org/commons/dbutils/
DbUtils is a small set of classes designed to make working with JDBC easier.
ということらしいので、本格的な、大規模のアプリケーション等で DB アクセスをラッピングする
フレームワークというよりは、
JDBCプログラミングを生でする代わりに少し楽をする、という目的なのかな。
サンプルをみてみたが、あまりイケてる実装には思えなかったが...
クラスもまだ 17コしかない。
とりあえずご参考までに。
0616デフォルトの名無しさん
NGNGこれ新しいの?
この前たまたま見かけて、オレもサンプル読んだ程度だけど、
ちょっと変わってて面白いと思った。
0617デフォルトの名無しさん
NGNG変わっているというか、誰でもやってることをCommonsプロジェクトが
やってくれた、という感じ。
いつも、みんなやっているよね。
毎回毎回作っているよね。
それなら、ライブラリ化しよう!
いつでもどこでもみんな同じモノを使えるよ!
ってとこかな。
0618デフォルトの名無しさん
NGNGSqletってORマッピングが結構気に入った.
SQL書くのが気にならないなら便利かも,
0619615
NGNG> これ新しいの?
たまたま jakarta のサイトを見ていたら、1.0 release と出ていたから、新しいものなのかと思った。
えらそうなことを 615 で書きましたが、今回はじめて知りました。
beta のころからずっと知られていたものなのだったらすみません。
ちなみに 11/10 付けのリリースだそうです。
0620615
NGNG誤:11/10
正:11/11
0621デフォルトの名無しさん
NGNG全件ならリストサイズなんだけど、GROUP BYかけてグループごとの件数を知りたい場合の話ね。
やっぱりループでぐるぐるカウントするしかないの?
0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNGcriteria.addSelectColumn( "count(*)" );
Record result = (Record) HogehogePeer.doSelectVillageRecords(criteria).get(0);
int count = result.getValue(1).asInt();
0624デフォルトの名無しさん
NGNGVillage使うのか。このあたりよく知らなかったよ。
ありがとう。
いい人だ>>623
0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNG- native SQL queries
- full Criteria query API, with support for associations
- integration of OSCache, SwarmCache, JBoss TreeCache, as well as EHCache.
- more "cool" features.
普通のSQLも書けるようになったみたいね
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNGHibernateは関係ないぞ。
0629デフォルトの名無しさん
NGNG\が入ることしかしらん。
なんでHibernateが関係ないとなるのか、わからん。
0630デフォルトの名無しさん
NGNG関係ないの表現のとり方を間違っている。
628のいいたい関係ないは、固有の問題じゃないということ。
0631デフォルトの名無しさん
NGNGエスケープするよねということですよ。はい。
0632デフォルトの名無しさん
NGNGようするに、Hibernateは自動で対処してくれないということだな
0633デフォルトの名無しさん
NGNG無知でした・・・
どうもありがとう。
0634デフォルトの名無しさん
NGNG開発チームにそういう要望を誰もコミットしてないからだろ。
頼まれてもいない全言語ですべての文字が文字化けしないか誰が試すんだよ。
0635デフォルトの名無しさん
NGNG普通に\入れたときはどうなるの?
0636デフォルトの名無しさん
NGNG当たり前だけど普通にJavaで\使ったときと同じ。
0637デフォルトの名無しさん
NGNG普通にJavaで\使ったときとは?
文脈からいえば
PreparedStatement#setString
のとき?
0638デフォルトの名無しさん
NGNG"価格は\\4,000"
みたいな感じだろ。
0639デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG>>627
表示じゃなくて表でおわるだったけど。
0642デフォルトの名無しさん
NGNG表示に関してでも表で終わる文字でもなく、\という文字を普通に
Hibernateに渡したらどうなるかと言う質問以外には読み取れないのだが、どうよ?
0643デフォルトの名無しさん
NGNG本題はそこじゃなかったことに気づけ。
も少し前から話が始まってるだろ。
0644デフォルトの名無しさん
NGNG明記されてないから、みんな直前の話題だと思って
いるのだろう。まぁ、書いた本人は脳内で違う話題に
レスをしているので、話がかみ合わなくなっている。
0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNGttp://homepage2.nifty.com/igat/igapyon/diary/2004/ig040121.html
……だめぽ
0647デフォルトの名無しさん
NGNG誰かTorqueを教えてやれよ
0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNGローマ字にすればいいのに。
0651デフォルトの名無しさん
NGNG貴様ら、負の遺産という言葉を知らんのか。(w
0652デフォルトの名無しさん
NGNGそれをsplitして他のテーブルを検索してくれってのがあったな。R-Oもクソもない。
Tierraって使ったことある人いない?
今仕様策定中のシステムで、TorqueかHibernateかその他のR-Oマッパーか
はてはJDBC+DbUtilsでゴリゴリか悩んでる中。DbUtilsでいい気がしてきた。
■ このスレッドは過去ログ倉庫に格納されています