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
0075デフォルトの名無しさん
NGNGたしか、PSなんとかというメソッドがあったきがする。
DocかなんかにPreparedだとコメントしてあった記憶が・・・。
といって使ったことはないので真偽不明でふ。
嘘だったらすまそ
007671
NGNGにdoPSSelectってのがあったよ。
>>74
JDBCのコーディングが簡略化できるのが最大のメリットでは?
ただそれだけと言えば、それだけだな。
SQL書いたほうが可読性がよさそうな気もしないでもない。
あとCreate文の生成とかデータベースの作成とか付属的な機能もあるけど。
ほかに何かあります?
007772
NGNGTorqueでPreparedStatementを使っているのはBasePeerのdoPSSelectの中だけのようです。
そのメソッドの中でローカルなPreparedStatementを作成して1回だけexecuteQueryしているだけなので
複数回効率的に実行する目的ではPreparedStatement使用していないのかなと思いました。
007872
NGNG効率的に同じCriteriaを複数回実行・・とかは出来ないようです。
0079デフォルトの名無しさん
NGNGCriteria.CriterionにもappendPsToとかいうのがあるなぁ。
説明見てもそっけなくてよくわからん。
Criteriaのなかでこれよんだりしてるんだろか。
ソース見る気力ない・・・。
なんか、個人的に使った感触だとCriteriaは使いまわすもののように思えなかったなぁ。
DBに投げた前後で内容が変化したりしてなかったっけ・・・。
効率悪いことこの上ないんだけども・・・。
0080デフォルトの名無しさん
NGNGっていう一連の処理が当たり前になったしなぁ・・・
かといってこういうフレムワーク&JDOの存在は無視できないし・・・
>SQL書いたほうが可読性がよさそうな気もしないでもない。
そうなんだよな、少なくとも俺にとってはそう思う
俺の場合はデータベース接続部分を別管理にしてるから
そのほうが見やすいということもある
>あとCreate文の生成とかデータベースの作成とか付属的な機能もあるけど。
>ほかに何かあります?
ん?Create文データベース作成は通常でも出来るんじゃないの?
俺昔、MySQL用のSQLのターミナル作ったとき
URLにデータベース指定しないで単に「jdbc:***:mysql」でとめてやったら
Createも、use DataBase名やshow databasesとかもできたよん
0081デフォルトの名無しさん
NGNG76ではないけれど。
>>あとCreate文の生成とかデータベースの作成とか付属的な機能もあるけど。
>>ほかに何かあります?
>ん?Create文データベース作成は通常でも出来るんじゃないの?
Torqueの例でいくとXMLで定義した情報をベースにOMクラスをつくるんだけど
同じXMLをもとにDB構築用のSQLを自動生成してDB作りに行ってくれる。
その辺のことを言ってるのだと思われ。
逆にDBを先に構築しておいてそのDBから定義情報を引き抜いてXML生成→OMクラス生成とかね。
データの引き出しなんかもできるから場合によっては環境移行ツールとして使えたりもする。
本筋と外れたとこで便利なんでは?と。
008271
NGNG普通にJDBCでやるとして、テーブル作成だけTorque使うってのもありだと思う。
テーブル定義書からDB作成なんてツールもPOI、xpathあたりを使えば
簡単にできそう。大幅なコストダウンってわけでもないが、、、
本筋のコーディング部分のところは、今のところメリットは薄そうだね。
学習コストもかかるし、、、
>かといってこういうフレムワーク&JDOの存在は無視できないし・・・
同意。雑誌とかでも結構特集されてたりすると、つい良いもんだと
錯覚してしまうよ。この辺の見極めも大事かな。
0083デフォルトの名無しさん
NGNG> >SQL書いたほうが可読性がよさそうな気もしないでもない。
> そうなんだよな、少なくとも俺にとってはそう思う
> 俺の場合はデータベース接続部分を別管理にしてるから
> そのほうが見やすいということもある
そうかなぁ?
ひとつのコード中に二つの言語があるということのほうが気持ち悪いと思うけど。
なるべくそういうことは可視性から言っても避けるべきだと思う。
同じようにHTMLの中にJavaのコードが入ることを避けるために、
TaglibやVelocityなんかのTemplateがあるわけだし。
0084デフォルトの名無しさん
NGNGSQLマスターな奴がいればいいんだよな。
速度の問題が出てくると、結局SQL一発でやった方が
ダントツに速い場合がでてくるし。
0085デフォルトの名無しさん
NGNG言語内言語だから正規表現みたいなもんじゃない?
正規表現をJavaのメソッドで構成したら、それは可読性が
高いと言えるんだろうか?
0086デフォルトの名無しさん
NGNGうちの職場では、ExcelにDBの定義書を書いて
スクリプト一発でsqlに変換してる。
0087デフォルトの名無しさん
NGNGオレはスクリプトじゃなくて、た
VBAでさらにテーブル生成までを作った。
(外部キーやPKも)
だけどERwinがあればERwinが一番いい。
0088デフォルトの名無しさん
NGNG>普通にJDBCでやるとして、テーブル作成だけTorque使うってのもありだと思う。
うちは結局これで、ほとんどOMクラスは使ってなくて、
直接SQLを書いてTorque経由で投げてる感じ。
ConnectionPoolの管理とか考えてないのでそれだけでも楽っちゃ楽。
>>83
最近思うんだけどタダ単にマークアップ付き言語が読みづらいだけなんじゃなかろか。
慣れなのかもしれないけど・・・。
少なくとも一般的なプログラミング言語の書式と混在し得ないような気がする。
Javaの中のSQLはうざいけど、流れをそのまま読めるし。
>>86
>>87
俺、自マシンからは直接通信できないネットワーク(要するに客先なんだけど)に
開発環境を構築しなくちゃならないことがあった。
Telnet等でいくつかホストを経由しないと接続できない。
まぁレアケースなんだろうけどTorqueのおかげでローカル環境で作ったものを
むこうで再構築するのが割と楽になったよ。
0089デフォルトの名無しさん
NGNGまあ、問題なのはソコではないとは思うのだが・・
0090デフォルトの名無しさん
NGNG地獄を見た事の有る奴、結構いるんじゃない?
0091デフォルトの名無しさん
NGNGそんな恐ろしいんですか?
全然知らんけどっていうかポーティング自体知らんゴメン
0092デフォルトの名無しさん
NGNGだけど実行してみないとケアレスみすすら分からない。
0093デフォルトの名無しさん
NGNGプログラム書く前にSQL実行しない?
0094デフォルトの名無しさん
NGNG簡単な修正なら実行しない
0095デフォルトの名無しさん
NGNGSQLを発行し、DBへのI/Oだから、SQL生成
プログラムとなっても仕方ないのでは?
もしユーザ(オペレータ)がSQLを知っていたら
(熟知していたら)APなんて必要ない訳だし。
DBシステムなら、必ずしも一つの言語から
アクセスするということでもないし、
(パッケージで単にDBをストレージとして
見るなら別だけど)
言語別にDBアクセスの方法を覚えるの
もなんだかなぁとも思える。
WEBにしてもそう、最終的にはHTML
(やJavascript)で表現するから、
HTML生成がゴールとなってもしょうがない。
0096デフォルトの名無しさん
NGNGおれは、修正云々じゃなくて、
>(プログラムを作って)実行してみないとケアレスみすすら分からない。
ということに答えたんだけど...
もし、(最初にSQL実行)してないのなら
まず目的のSQLを書いて実行してから
プログラム製造することを勧めるよ。
そうすれば、ミスもわかるよ。
0097デフォルトの名無しさん
NGNGそうなんだけど、>>92の言うように動的SQLや動的HTMLはコンパイル時点では
ケアレスミスさえ発見できないという問題があるから、そういった部分をTorqueや
JSP+タグライブラリなどで局所的、静的に正しさを保証できる範囲に押し込めて
おいて、あとの全てはJava言語の世界で解決しようという思想なんじゃないかな?
0098デフォルトの名無しさん
NGNG>コンパイル時点では
>ケアレスミスさえ発見できない
なつかしい...PowerBuilderという
開発ツールは、埋め込みSQLでも
コンパイル時点でエラーが分かった。
だけど、そういう仕様だと、
コンパイル時点でDBに接続しておかないと
SQLエラーか分からないし(そうだよね)、
接続してないと、ワーニング出まくった
けど、それでもいい?
確かにSQL解析は便利だったけど、
プログラム書くときはそっとしておいて
欲しいと思ったのは贅沢だったかな。
0099デフォルトの名無しさん
NGNGTorqueやWebObjectsはコンパイル時にいちいちSQLを投げたりしないよ。スキーマ定義
(と各DBMS固有のSQL方言についての知識)さえ持っていれば「エラーにならないSQL」を
生成することは可能だし、そうしょっちゅうスキーマが変更されるわけじゃないから、常に
最新の情報をリアルタイムで取得する必要はないと思うけど。
まぁフリーフォーマットの埋め込みSQLの正しさをチェックするには、実際にDBMSに
投げるか、同等の構文解析エンジンを持つしかないんだろうけど。
0100デフォルトの名無しさん
NGNGあるベンダのDBからほかのベンダのDBに移行するような場合の問題だよね
たしかにちょっと特殊なことをやろうとするとすぐ面倒なことになりそうだ
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG* 何十年後かはSQLは無くなってXMLにおけるDOM API, みたく、言語を超えた共通のRDBデータ取り出し用APIが開発される。
* 現状では、自前でその特定のアプリに特化したSQL生成プログラム・フレームワークをプログラマが作るのがいい(シンプルにいこう)
0105デフォルトの名無しさん
NGNG全然有名じゃ無いから知らなくて良し
0106デフォルトの名無しさん
NGNGsmalltalk+OODBが最強。
0107デフォルトの名無しさん
NGNG例えば「商品クラス」があって商品名や説明文の
インスタンス変数を保持していたとします。日英の
バイリンガルな仕様で、「商品日本語テーブル」と
「商品英語テーブル」がDB内にはあります。
Item item = 生成メソッド(itemId, language);
みたいな形で、商品オブジェクトを取り出したいのですが、
Torqueで実現できますでしょうか?
もしTorqueでは出来ないとすると、他のツール、あるいは
CMPで実現することは可能なのでしょうか?
0108あぼーん
NGNG! i iノノリ)) 〉
i l l.´ヮ`ノリ <先生!こんなのがありました!
l く/_只ヽ
| ̄ ̄ ̄ ̄ ̄|
http://saitama.gasuki.com/koufuku/
0109デフォルトの名無しさん
NGNGそういうのをやるためにこのスレの話題にでてくるモノたち
があるわけですが。
0110デフォルトの名無しさん
NGNG漏れは保守的なので Ruby/DBI でいいです。
0111デフォルトの名無しさん
NGNGTorqueから使えるの?
0112デフォルトの名無しさん
NGNGAntで実行すると、いつまで経っても処理が終わらない。
たった人のテーブル定義でさえも。
なぜ?
0113デフォルトの名無しさん
NGNGやったことないけど
SQLでテーブル作ってしまってjdbcタスクでとりだすというのではいかんだろうか。
TorqueのAnt使う処理っていろいろ配慮が足りてなくて、
いつも今ひとつ痒いところに手が届かない感じ。
もうちょっと手を加えるといいのだろうけど・・・。
0114山崎渉
NGNG0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG*BC4J
http://otn.oracle.co.jp/cgi-bin/otn/auth_r.cgi?path=/download/products/jdev/htdocs/j2ee_with_bc4j/j2ee_with_bc4j.html
http://otn.oracle.co.jp/cgi-bin/otn/auth_r.cgi?path=/download/products/jdev/htdocs/jdev_wp_bc4j/bc4j.html
## 日本語:要OTN会員ID
http://otn.oracle.com/products/jdev/htdocs/j2ee_bc4j.html
http://otn.oracle.com/products/jdev/info/techwp20/wp.html
# 英語、OTN会員でなくても見られる
*Toplink
http://otn.oracle.com/products/ias/toplink/content.html
# 英語
0117山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0118山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0119デフォルトの名無しさん
NGNG0120bloom
NGNG0121.
NGNG0122デフォルトの名無しさん
NGNGうーん、でも今後はJDOで落ち着きそうだね。
今後たてつづけにJDOの本がでるし。
オライリーのJDOの本はそこそこよさそうだね。洩れも注文したよ。
http://jdocentral.com/JDO_Books.html
0123デフォルトの名無しさん
NGNGhttp://www.oreilly.com/catalog/jvadtaobj/
0124デフォルトの名無しさん
NGNGその本、前から気になっててサンプルチャプターを
読みました。英語が苦手というわけではないのだけど、
内容が難しくて買うのを断念しました。
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG5,000円くらいなら払ってもいいよ。
てか、シェアが高そうなJDO実装って何。
どこで調べればいいの。
0128デフォルトの名無しさん
NGNGCastor, OJB, Hibernateあたりを比較して使ってみたヤシはいますか?
将来的にJDO/CMPで落ち着くのはいいんだけど、
こちとら三ヶ月先で動くモノを構築することを考えないと
いけないんで……。
0129デフォルトの名無しさん
NGNG日本語記事を抜きにしても、Torqueが使用方法を学ぶ上では
楽だった。
0130デフォルトの名無しさん
NGNGCastorJDOを仕事に使った。
俺が調査した時点では、Torqueはガラクタの寄せ集めみたいで
とても使えるシロモノではなかった。
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNGここで調べろ
http://jdocentral.com/
0133128
NGNG参考になります。いまはTorqueはちょっと措いといて、
いま、Castor/OJB/Hibernateを調査してます。
KickStartとかTutorial程度を見る限りでは、
マッピング用XMLの書き方としては、
Hibernate >>> CastorOJB(どっちもどっち)
という印象なのだけれど、そんなことないのかな。
XDocletが対応してくれてたり、やEclipseでのプラグインがあったり、
というのも助かるので、Hibernateに惹かれているのだが、
このスレ見てる人的にはどーでしょう?
eclipse pluginのhibernatorを使おうとしてDBにconnectすると
java.lang.IllegalArgumentException: Path must include project and resource name: /プロジェクト名
とか言われて動かない。
DBの接続設定は多分間違ってないと思うんだけど、原因わかる人いますか?
0135134
NGNGところでhibernate query languageってなんだ
SQLよりわかりにくいぞ
0136128
NGNGクエリのところに来たんですが、
HQL(w って、独自仕様?
FAQを眺める限りだと
「SQLとそんなに変らないから安心して使ってね」と言っているように
みえるけれど、独自仕様なことに変りはないんよね?
これは実際の仕事プロジェクトで導入するには
抵抗に合いそうな予感……。
私ももうちょっと勉強してみます。
0137130
NGNG参考までに、CastorJDOもOQLっていう独自の言語でオブジェクトを
fetchする必要があります。
SELECT o FROM com.example.package.Person o WHERE id = 1
こんな感じ。
0138128
NGNG仕事で使うにあたって、
プロジェクトや顧客の抵抗にあったりしませんでした?
0139130
NGNG自社プロダクトでしたので特に問題は無かったです。
ただ、マッピング&クラス作成がほぼ手作業になってしまって
あんまり工数削減につながらないので、CastorJDOを使うのは
これっきりという感じ。
Hibernateはよさそうね。
0140128
NGNG導入に抵抗が無かった、ってのはいいですね。
クラスはともかくもマッピングが手動でしかやれない、
(もしくはツールを開発する)となると工数的なメリットは
キビシイっすね。
Castorもそうだし、OJB(の現状?)もそうなのかな。
ドキュメントもちゃんとしてそうなので、
ちょっとHibernateを実コードベースで調査したいと思います。
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNGhttp://dictionary.goo.ne.jp/search.php?MT=hibernate&kind=ej
ノートPCのハイバネーションと意味的には似たようなもンだろう
0144デフォルトの名無しさん
NGNGhttp://castor.exolab.org/oql.html
ODMG3.0仕様のサブセット + 独自方言だそうな。
まあ、どこのSQLも方言はあるしな
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG今から学びはじめるとしたらRC2の段階の2.0系でしょうか。
0147デフォルトの名無しさん
NGNG0148130
NGNGEJBじゃオオゲサなプロジェクトだってあるしね。
0149デフォルトの名無しさん
NGNGhttp://homepage3.nifty.com/coco-nut/
0150134
NGNGパッケージ名が変わってたり
Hibernate.createDatastore().storeClass(Foo.class)..buildSessionFactory();
が
new Configuration().addClass(Foo.class).buildSessionFactory();
にかわってたり、ドキュメントがないのが痛い。
0151128
NGNGいま、1.2.3のドキュメントを攻略中なんだけど、
やっぱり2.0にトライするのに
http://hibernate.bluemars.net/68.html
だけだとツライ?
0152デフォルトの名無しさん
NGNGオライリーからも本がでてるし(しかも米国では売れてる)、教材にはもってこいじゃないか。
0153デフォルトの名無しさん
NGNGいまちょっとぐぐって見つけたもの:
http://tjdo.sourceforge.net/
他には?
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGhttp://xorm.org/
0156デフォルトの名無しさん
NGNG「Professional Struts Application」ではOJBをつかってるね。
もちろんOJBもJDOAPIサポートしてるよ。
0157146
NGNGダウンロードすると中にドキュメント入ってたよ。
2.0 beta 5のやつだけど。
0158デフォルトの名無しさん
NGNGTJDOはいまあるフリー実装の中では、多分一番いい出来だと
思う。(ドキュメントを読む限りで。ソースを見たわけではない。)
ただ、アプリケーションサーバで使う場合にDataSourceを
JNDI経由で取って来れないのが、オレの中では×。
>>156
OJBはJDO APIが使えるだけで、マッピングは独自のものだよね?
Hibernateは確かに惹かれるものがある。が、JDOではないのが
ちょっと気になる。ただこのままフリーで優れたJDO実装が当分
出てきそうもないのなら、Hibernate使うしかないじゃんと
自分を説得しようとしている。
Torqueは使ってみたけど、BaseXXX、BaseXXXPear、XXXPearとか
たくさんクラスが生成されるのがイヤになった。ちょっと複雑な
Selectをしようとすると、途端にCriteriaの生成が難しくなる。
0159デフォルトの名無しさん
NGNGこれも現状だとコンテナJNDIからのDataSource利用は
できないのかな?
0160134
NGNGありゃほんとだ。ホームページさがしてたよん。
で2.0のドキュメントみたけどサンプルコードがいっぱいのっててイイ!
なので1.2は捨て。
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGOJBの翻訳サイトあるよ。http://www.terra-intl.com/jakarta/ojb/
わいのマイブームはStrutsとOJBを連係させることかな。
いいチュートリアルサイトがあるべ。英語だがね。
http://www.robertoghizzioli.it/jcomm/jcomm_tutorial.html
0164デフォルトの名無しさん
NGNGそれはさすがにしってる。
でも、チュートリアルとかは翻訳されてないから、そことかね。
0165デフォルトの名無しさん
NGNGhttp://accessplus.jp/staff/in.cgi?id=11141
プニュ ( ゚∀゚)σ)´Д`)
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGOJBもTorqueベースで開発されている、みたいなことが
書いてあったんだけど、そうなんですか?
自分で確認しようと思ったんだけど、Torqueがわからないので……
0168デフォルトの名無しさん
NGNGhttp://members.tripod.co.jp/nichkirai/index.htm
0169デフォルトの名無しさん
NGNGそれ笑えるな
本当に女で13歳だったらなかなかすごいかも知れんなw
0170デフォルトの名無しさん
NGNGOJBは足周りにTorque使ってるよ。
0171デフォルトの名無しさん
NGNGOJBはクラス作成もデータベース作成(内部テーブルはTorqueを利用)も自分で作るから自由度が高い。
後で変更するときに簡単に修正できる。
>OJBもTorqueベース
OJBはauto_incrementを利用するときに内部テーブルを作るんですよ。
そのときにTorqueを利用します。
0172デフォルトの名無しさん
NGNG0173172
NGNG0174デフォルトの名無しさん
NGNGCastorでもTorqueでもHibernateでも、いまいち馴染まない気がする。
この種のデータバインド機構を使うなら、ある程度割り切らないと
駄目なのかねえ。
■ このスレッドは過去ログ倉庫に格納されています