トップページtech
983コメント363KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
●各種Framework
[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
0002デフォルトの名無しさんNGNG
性能、パフォ、実績、事例など情報を持ち寄りませう
0003デフォルトの名無しさんNGNG
Hybernateが結構よさげなんだけど、日本語リソースって見つからない。。。
0004デフォルトの名無しさんNGNG
>>1
もうちょい時間おいてから
スレたてたほうがよかったかもしれない
JDOも発表されてまだまだ浸透してない
この辺はまだ過渡期だからな
0005デフォルトの名無しさんNGNG
Torqueは、けっこー浸透してきたイメージがあるんだけど、
まだまだなんかな?
0006デフォルトの名無しさんNGNG
>>5
トルクはまだいいけど
比べる対象が無いって言うのが現状(っていうか使わないから知らんだけなんだが・・・)
使ってる人がいればいいんだが日本語Docがなさそうなので
俺にも勉強する気ない。
仕事で、いやがおうにも使わないといけない状況にならないと
読む気しないんだな英語は・・・忙しいし
0007デフォルトの名無しさんNGNG
とりあえずJDOをどのように解釈して
発表してくるのか
ベンダの動きを見てみないとわからん
まあ、そう遠い日の話じゃないと思うが・・・

まあ、Torqueに限ればロギングが
Log4jっていうのがどうも気に食わない
0008デフォルトの名無しさんNGNG
仕事でJDKが、1.3と指定されれば、Log4jが現実的か。。。
0009デフォルトの名無しさんNGNG
>>7
Log4jで、JDK1.4 LoggingAPIにリダイレクトするアダプタ作ればエエヤン。
大して難しくも無いさ。
0010デフォルトの名無しさんNGNG
>>9
うん、がんばってみる
0011デフォルトの名無しさんNGNG
アプリ内の各モジュールから、JDBC経由でゴリゴリSQL投げるのって
コストかかりまくりだよね。最低限コネクションプーリングするとしても、
それプラスこういったフレームワーク使うとしたら、現時点では
トータル的にどれがベストチョイスだろう?
フレームワーク内でCPやってくれるやつってあんのかな?
0012デフォルトの名無しさんNGNG
>>11
EJBはCPが当たり前でつ。
001312NGNG
つうかJDBC2.0は自動的にCPです。
0014デフォルトの名無しさんNGNG
もうSQLは書きたくないでつ
0015デフォルトの名無しさんNGNG
EOFマンセー
0016デフォルトの名無しさんNGNG
>>14
EJB 2.0 CMPで、SQL書くのをやめられるよん。
0017デフォルトの名無しさんNGNG
ちょうどtorqueを昨日動かして見ました。JavaWorldの記事を読みつつ。
でも、ちょっと情報少ないかな。jakartaのCriteriaHowToとか読んでも
情報不完全で、詳しい使い方が判らない。

今悩んでるのは、複数のテーブルをJoinしてSelectする際に
各テーブルのカラムの値を同時に取ってくる方法ってあるんですかね?

つまり、role_idとrole_nameを持つRoleというテーブルが有り、
permission_idとpermission_nameを持つPermissionというテーブルが有り、
role_idとpermission_idを外部キーとして持つRolePermissionというテーブルが有る時に
関連付けられているrole_nameとpermission_nameを同時に取得したいのですが、どうでしょ?
torqueだと無理なのかな。
0018デフォルトの名無しさんNGNG
>>17
勘コード。

Criteria crit = new Criteria();
crit.add(RolePermissionPeer.ROLE_ID,"ROLE");
List t = RolePermissionPeer.doSelect(crit);
RolePermission r = (RolePermission)t.get(0); // 一行Hitを想定ね
String roleName = r.getRole().getRoleName();
String permissionName = r.getPermission().getPermissionName();

・・・雰囲気はこんな感じか。細かいことは覚えてないからよろしく解釈しておくんなまし。
外部キーと一意制約がちゃんとschemaで定義してあれば楽なはず。

ただしこのまんまやると恐ろしくパフォーマンス悪い罠。
CriteriaのLeftとかRightとか言うメソッド(があったはず)を使うといいのかもしれん。(うろ覚えな上未検証)
あと各BasePeerにdoSelectJoinなんたらというprivateで隠されてるメソッドもあったりする。かも。

なんかいろいろ悪い夢を見たきがするなぁ・・・・。

0019デフォルトの名無しさんNGNG
EJB2.0の Many to ManyのCMRを利用するとよさそうだけど。
BEAやIBMのEJBサーバが賢いこととを期待して。
0020デフォルトの名無しさんNGNG
>>18
レスありがと。
でも、それだとDBへの問い合わせが恐らく3回発生しますよね。
確かにパフォーマンスが悪い。

もうちょっと僕も調べてみます。
0021デフォルトの名無しさんNGNG
>>18
>あと各BasePeerにdoSelectJoinなんたらというprivateで隠されてるメソッドもあったりする。

ソース読んで実験もしてみました。該当のメソッドを使用すると
一度のSQL発行だけで複数のテーブルの値を同時に取ってこれました。

ただチュートリアルにも書いてあったとおり、1つのテーブルしかJoinできず
例えばdoSelectJoinAllのようなメソッドは存在しません。
http://www.jajakarta.org/turbine/jp/turbine/torque/tutorial.html

となると、doSelectJoinなんたらのコードを参考にしてユーザが
実装するしかなさげです。

しかしdoSelectJoinなんたらのコードを読むと、
BasePeer.doSelectで取得したListから重複してるOM Classを除去している?
様子なので、JOINするテーブルの数が多いと面倒・・。

SQLの発行回数が気にならなければ、簡単に書けるのですが。
0022lilacNGNG
eBrain21.comは、インターネットユーザーがホームページを
掲載するにあたって必要なサーバースペースを有料レンタルしています。
お客様に快適なサーバーを提供するためにさまざまなホームページの目的に応じて、
単なるホームページスペースだけではなく、動画やゲームまたは個人放送はもちろん、
そのツールとしてCGI、PHP、SSI、SQLデータベースなどあらゆるサーバースペースを提供しております。

http://www.ebrain21.com/

[email protected]
0023デフォルトの名無しさんNGNG
Java⇔RDBのMappingのFramework俺作ったよ。しかも、中規模のシステムで安定稼働してるよ。
下記以外ならSQLを書く必要はありません。
一般的に使用頻度の少ない演算子や関数を使用するSQL文の場合。
万が一、複雑なSQLが必要な場合オーバーライドで対応する。
Torqueは設定がめんどくさい。あんな設定が必要なら、チームで開発する場合SQLを書いた方がまし。
しかも設定する情報はDatabaseMetaDataクラスで実行時に取得できる。
EJBやるやつバカ。そのうち無くなるよ!!
0024デフォルトの名無しさんNGNG
>>23
こうばしいな
0025デフォルトの名無しさんNGNG
>>23
オープソンーヌで公開しる!
ライセソヌは、ApacheヌタイノレかBSDライセソヌで。
0026デフォルトの名無しさんNGNG
>>23
あんたのそのやり方のほうが時代遅れなワケですが。

誰がそのフレームワークの仕様を管理し、メンテするの?
誰がそのフレームワークの利用方法を教育するの?
そのコストはタダじゃない。少なくともアンタの人件費分はかかるわけで。

標準仕様なら、多分たくさんのデベロッパがリテラシを各自で抱えることになる
ので、そういうコストが格段に少ないのですよ。こういったことを考えられない、
半可通技術マンセー馬鹿が、よく俺様フレームワークを書いて悦にいってるんで
すよね。あーやだやだ。
0027デフォルトの名無しさんNGNG
多くのエンジニアに共通で認識されているということの重要性をわかってないんだね。
0028デフォルトの名無しさんNGNG
>>23を弁護するわけじゃあないけど、、、

じゃあ、どのORマッピングツールが標準仕様となって
将来に渡っても安心して利用できるかどうか判断できるのかと問い詰めたい。

ないならないで作るのが正しい技術者の態度だと思うんだが。
そうすれば、少なくとも自分の面倒みているプロジェクトでは安心して利用できるじゃん

一知半解たあ、>>26のことじゃないの?
002926NGNG
>>28
オプソでデファクト候補がいくらでもある分野でそれをやるのは
アホの所為。ないなら作るのは、しかたないと思うけどね。
0030デフォルトの名無しさんNGNG
>>28
別に将来の話をしてるんじゃない。
今すでにあるものが使えて、多くの技術者に認識されているものなら、
独自仕様突っ走るよりいいんじゃないの?
ってだけなんだけど・・・・
003126NGNG
ORマッピングについては、EJBの新しい仕様がAPサーバに内蔵させる
という方針で固まっている。(細かい仕様はシバラク右往左往するかも
しれんけど)
遠い将来にわたって使用できるものなど必要ない。なくなるんだから。
0032デフォルトの名無しさんNGNG
というか、26は何が言いたいのかがわからん。

>>29でデファクトスタンダードになる候補があるのに実装するのはアフォと言いつつ
>>31では現状の実装でデファクトになるもんなんざあないとおっしゃる。

あと、ちょっと別の話になるけど、
EJBってEJBコンテナが無いと利用できないんだよ?知ってる?
0033デフォルトの名無しさんNGNG
TorqueでテーブルをロックするのってTorqueクラスでgetDBして
取得したDBのlockTableメソッドを呼び出す・・であってます?

でもDBPostgres.javaとかの中身を見るとメソッドの中身が空ですが・・。
それにhttp://db.apache.org/torque/db-adapters.html

Databases that only support table level locking obviously
do not require this method. Databases that support row level
locking must implement this method to avoid synchronization problems.

というのも訳わからんし。なんでテーブルロックをサポートしているDBが
lockTableメソッドを必要としないのかしらん?
もしかして別な方法でロックできたりしますか?

あとFOR UPDATE付きでSELECTしたい場合とかはどうしたらよいのだろ。
0034デフォルトの名無しさんNGNG
>>32
EJBコンテナは、今日びオプソ版もベンダ製無料実装もありますし。
0035デフォルトの名無しさんNGNG
>>34
うーむ。DBアクセスをSQLレスで手軽かつ柔軟に実現できるフレームワークとして
Torqueに期待したのですが、今の状態ではやっぱり使えないですねぇ。
EJBもEJB-QLの機能は貧弱だし、BMPにすると結局はSQLを記述する事になるしで・・。
0036デフォルトの名無しさんNGNG
Jakarta が EJB コンテナのフル実装に行かないのは、やはりそこらの企業と
暗黙の了解があるのだろうか。
0037女□NGNG
うーん

SQLに強い奴一人連れてきて
そいつに仕様叩き込んで 必要になりそうなセレクト文は全部viewにさせて
アプリからの呼び出しは 「select * from びゆ where ふがふが」 のみにする ってのが最強だと思ってたんだけど
最適化されたSQLが残って メンテするやつも勉強になるし

更新系は業務ベースで更新対象をモデル化して、モデルクラスをポコポコ作って実装してもらう
コネクションの管理(取得と返却とコミとロルバク)はモデル達の基底クラスにやらせる
更新系は長くて複雑なSQLなんて出てこないだろ(甘いか)
0038女□NGNG
DBのフレームワークってSQLを手で書かなくていいようにするのが目標なのかね
SQLは手でモロに書くものだと思ってるから かなり受け付けない

オラクルしか使ったことないからこんな考えになるんだろうな
0039デフォルトの名無しさんNGNG
>>38
EJBの目標は、ストレージの形態に依存しないインターフェイスにすること。
RDBだろうがOODBだろうがebXMLだろうが、未知のより進歩的なストレージだろう
がシームレスに使えることが目標なのよ。

だからEJBは、RDBに対して最適化されたインターフェイスが提供されるわけじ
ゃないのよね。RDBから自由になるって言う発想は、想定外?
004039NGNG
とはいっても、当分現実はRDB相手オンリーだろうケドネ。
0041デフォルトの名無しさんNGNG
TorqueにしろJDOにしろ可読性がもう少しどうにかなると助かるんだが...
0042デフォルトの名無しさんNGNG
>>39
> RDBだろうがOODBだろうがebXMLだろうが
これって、多次元DBについても言える?
実装はともかく、方針とか、目標とかの話で。
0043デフォルトの名無しさんNGNG
Torqueを導入した事例ってあるのですかね?
かなり使えないっぽいんだけど。
0044デフォルトの名無しさんNGNG
めんどくさいのはSQL作ること自体より、JDBCプログラミングするとこだと思ってるんですが
0045女□NGNG
>>39
>RDBだろうがOODBだろうがebXMLだろうが、未知のより進歩的なストレージだろう
>がシームレスに使えることが目標なのよ。

DBにあんな皮こんな皮かぶせてjavaで使えるようにするより
javaに合わせたデータベース作った方が早いと思うんだけど

なんとかを継承したクラスでstore()メソッド呼んだら
テーブルにデータが保存される(テーブルなかったら勝手に定義される)とか
そういうのはないのかね
0046デフォルトの名無しさんNGNG
>>42
DWHとかOLAPとかはOut of 眼中じゃないの?
0047デフォルトの名無しさんNGNG
>>45
EJBが目指しているのもたぶんその辺。
ObjectStore等のODBもそんな感じ。
でもどれもこれも不完全で不満だらけなのが現状。
0048デフォルトの名無しさんNGNG
正直、DB周りは直接SQL書くのが一番手っ取り早い。
今時、SQL知りません、わかりません、かけませんなんてやつ居ないでしょう。
0049デフォルトの名無しさんNGNG
Oracleなどが全部Javaでできていれば楽なんだよな
0050名無しさん@EmacsNGNG
そもそもEJBが・・・っていう話が
でてキソウデ怖いんですが。
0051デフォルトの名無しさんNGNG
> 今時、SQL知りません

ベンダ固有の瑣末なテクが必須っぽいので手を出しかねてます。
0052デフォルトの名無しさんNGNG
WebObjectsに含まれてるEnterprise Object Framework使うと、
TorqueやらJDOやらの中途半端なマッピングライブラリが赤子のように
感じる。売り物だけど安いし。
SQLなんか書く必要無し。RDBのスキーマ情報を自動でブッコ抜いてきて、
クラスにマッピングされたものと、アクセスに便利なメソッドを自動生成。

しかし知名度も低くツブシが効かないという罠。
シロウトにはオススメできない。
0053デフォルトの名無しさんNGNG
>今時、SQL知りません、わかりません、かけませんなんてやつ居ないでしょう。
sqlなんてselect,insert,update,deleteくらいしかないもんな。
やりたい事がわかってれば、あとはリファレンスでも見れば
さくっとSQL文が書けるよ。
0054デフォルトの名無しさんNGNG
そもそもJavaとは速度が足りない状況になったら
よりよいハードを買ってくれというものだから、
パフォーマンス云々は関係ないんだろな。
0055デフォルトの名無しさんNGNG
>しかし知名度も低くツブシが効かないという罠。
>シロウトにはオススメできない。

知名度が低いっていうのは、確かに致命的だよね。
永遠に自分が保守できるはずもないし。
0056デフォルトの名無しさんNGNG
>>55
結局、どんなにいいものかよりも多くの人に認知されているかが重要ってことなんだね。
だからオリジナルフレームワークが嫌われる。
0057デフォルトの名無しさんNGNG
いつの間にかいいスレができてるな。
このテーマのスレ、待ってたよ。
0058デフォルトの名無しさんNGNG
>>43
つこうたよ。認証処理程度だけどね。
IDEとかでコード書きやすくなるのがうれしかったくらいかなぁ・・・。

どっちかっていうとOMクラスよりはデータの吸出しとか
HTMLで定義情報はいてくれたりする事のほうがうれしかった。
RDBに接続してschema.xmlを自動で作ってくれる機能があるのを
最初から知ってればもっと楽になれたんだろうけど。

AntタスクなのでEclipseあたりのIDEとうまいこと統合できるといいのだがねぇ・・。
0059デフォルトの名無しさんNGNG
100% Pure Java のRDBMS
これでなんとか・・・・

「Java開発にはJavaデータベースが自然」――米ポイントベース社長
http://itpro.nikkeibp.co.jp/free/NC/NEWS/20030402/1/
0060デフォルトの名無しさんNGNG
>>59
Eclipseにシェアを食われつつあるJBuilderの二の舞を踏まないことを祈るばかり。
0061デフォルトの名無しさんNGNG
>>60
むしろそのPureJavaRDBMSをただで配布して欲しい
0062デフォルトの名無しさんNGNG
>>61
開発用はただで手に入るね。
0063デフォルトの名無しさんNGNG
>>59
RDBMSである以上、セマンティックギャップは同じようにあるのだがね。
0064デフォルトの名無しさんNGNG
>>61
こういうのもあるが
http://hsqldb.sourceforge.net/
"hsqldb is a relational database engine written in Java"
だそうだ。
0065ヽ(´ー`)ノNGNG
こんなのあったのか。Torque 面白そう。

>>17
JavaWorld って今月の?ちょっと読んでみまふ…。
0066デフォルトの名無しさんNGNG
>>65
4月号に載ってます。
あと技術評論社の「Jakartaプロジェクトテッテイ攻略」にも載ってました。

ただ、少し詳しくいじりたいと思ったらJakartaのページを読むしかないのですが、
余り詳しくは書いてないので、情報収集は結構大変。
Ja-Jakartaにはチュートリアルなどの和訳が有ります。
http://www.jajakarta.org/
http://www.jajakarta.org/turbine/sharing.html

個人的には
・3つ以上のテーブルのJoinがサポートされていない
(2回以上のSQL発行が必要、Viewを使えばよいのかもしれませんが)
・DB依存の書き方は結局残る。(レコードのロックとか)
・普及していない。日本語の資料が少なくTorqueを使える技術者が少ないので将来の保守が心配。

ので、今自分が担当しているプロジェクトで使うのは止めました。
0067デフォルトの名無しさんNGNG
http://www5b.biglobe.ne.jp/~ryo-kyo/osu.html

http://my.vector.co.jp/servlet/System.FileDownload/download/ftp/0/279026/pack/win95/game/table/pachinko/sikisai.lzh
0068デフォルトの名無しさんNGNG
>>67
LZHに直リンするスクリプト死ね。
0069デフォルトの名無しさんNGNG
>>59
どっかで聞いたことあるなと思ったら
ポイントベースってSUNONE4に入ってたのを思い出した
SUNONEインスコしたときに「何だコレ?」と思いつつも
一応、インストした覚えがある
>>62のいうように開発版だとは思うが・・・
ちょっといじってみるかな
0070ヽ(´ー`)ノNGNG
>>66
サンクス、参考になります。
jakartaのページ見てみましたが、学生なんで業務に使うわけじゃないんで、
現状のままでも大体満足です。ありがとう。
0071デフォルトの名無しさんNGNG
Torqueに詳しい人いる?
TorqueってpreparedStatementみたいなSQLのプリコンパイルって
できるの?どうやってやるんすか?
基本的にORB全般的にプリコンパイルはできない?
ただでさえ遅いのに、これできないとつらいなー。
0072デフォルトの名無しさんNGNG
>>71
ソースを少し読んでみましたが、たぶんTorqueでは無理だと思います。
毎回Statementを作成し直してるみたいです。
0073デフォルトの名無しさんNGNG
>>72
センキュ!
でも、もうTorque使用することになったんだよなー。。。
0074デフォルトの名無しさんNGNG
Torqueってどういうときに便利なんですか?
0075デフォルトの名無しさんNGNG
>>71-72
たしか、PSなんとかというメソッドがあったきがする。
DocかなんかにPreparedだとコメントしてあった記憶が・・・。
といって使ったことはないので真偽不明でふ。
嘘だったらすまそ
007671NGNG
http://jakarta.apache.org/turbine/torque-3.0.0/apidocs/org/apache/torque/util/BasePeer.html
にdoPSSelectってのがあったよ。
>>74
JDBCのコーディングが簡略化できるのが最大のメリットでは?
ただそれだけと言えば、それだけだな。
SQL書いたほうが可読性がよさそうな気もしないでもない。
あとCreate文の生成とかデータベースの作成とか付属的な機能もあるけど。
ほかに何かあります?
007772NGNG
>>76
TorqueでPreparedStatementを使っているのはBasePeerのdoPSSelectの中だけのようです。
そのメソッドの中でローカルなPreparedStatementを作成して1回だけexecuteQueryしているだけなので
複数回効率的に実行する目的ではPreparedStatement使用していないのかなと思いました。
007872NGNG
一度作成したCriteriaからPreparedStatementを作成して、
効率的に同じCriteriaを複数回実行・・とかは出来ないようです。
0079デフォルトの名無しさんNGNG
んー。。。

Criteria.CriterionにもappendPsToとかいうのがあるなぁ。
説明見てもそっけなくてよくわからん。

Criteriaのなかでこれよんだりしてるんだろか。
ソース見る気力ない・・・。

なんか、個人的に使った感触だとCriteriaは使いまわすもののように思えなかったなぁ。
DBに投げた前後で内容が変化したりしてなかったっけ・・・。


効率悪いことこの上ないんだけども・・・。
0080デフォルトの名無しさんNGNG
「コネクション張ってSQLをゴリゴリ書いて、投げて受けてクローズ忘れずに・・・」
っていう一連の処理が当たり前になったしなぁ・・・
かといってこういうフレムワーク&JDOの存在は無視できないし・・・
>SQL書いたほうが可読性がよさそうな気もしないでもない。
そうなんだよな、少なくとも俺にとってはそう思う
俺の場合はデータベース接続部分を別管理にしてるから
そのほうが見やすいということもある

>あとCreate文の生成とかデータベースの作成とか付属的な機能もあるけど。
>ほかに何かあります?
ん?Create文データベース作成は通常でも出来るんじゃないの?
俺昔、MySQL用のSQLのターミナル作ったとき
URLにデータベース指定しないで単に「jdbc:***:mysql」でとめてやったら
Createも、use DataBase名やshow databasesとかもできたよん
0081デフォルトの名無しさんNGNG
>>80
76ではないけれど。
>>あとCreate文の生成とかデータベースの作成とか付属的な機能もあるけど。
>>ほかに何かあります?
>ん?Create文データベース作成は通常でも出来るんじゃないの?

Torqueの例でいくとXMLで定義した情報をベースにOMクラスをつくるんだけど
同じXMLをもとにDB構築用のSQLを自動生成してDB作りに行ってくれる。
その辺のことを言ってるのだと思われ。

逆にDBを先に構築しておいてそのDBから定義情報を引き抜いてXML生成→OMクラス生成とかね。
データの引き出しなんかもできるから場合によっては環境移行ツールとして使えたりもする。
本筋と外れたとこで便利なんでは?と。
008271NGNG
>本筋と外れたとこで便利なんでは?
普通にJDBCでやるとして、テーブル作成だけTorque使うってのもありだと思う。
テーブル定義書からDB作成なんてツールもPOI、xpathあたりを使えば
簡単にできそう。大幅なコストダウンってわけでもないが、、、

本筋のコーディング部分のところは、今のところメリットは薄そうだね。
学習コストもかかるし、、、
>かといってこういうフレムワーク&JDOの存在は無視できないし・・・
同意。雑誌とかでも結構特集されてたりすると、つい良いもんだと
錯覚してしまうよ。この辺の見極めも大事かな。
0083デフォルトの名無しさんNGNG
>>80
> >SQL書いたほうが可読性がよさそうな気もしないでもない。
> そうなんだよな、少なくとも俺にとってはそう思う
> 俺の場合はデータベース接続部分を別管理にしてるから
> そのほうが見やすいということもある

そうかなぁ?
ひとつのコード中に二つの言語があるということのほうが気持ち悪いと思うけど。
なるべくそういうことは可視性から言っても避けるべきだと思う。
同じようにHTMLの中にJavaのコードが入ることを避けるために、
TaglibやVelocityなんかのTemplateがあるわけだし。
0084デフォルトの名無しさんNGNG
前のレスにもあったが、結局はプロジェクトに一人
SQLマスターな奴がいればいいんだよな。
速度の問題が出てくると、結局SQL一発でやった方が
ダントツに速い場合がでてくるし。
0085デフォルトの名無しさんNGNG
>>83
言語内言語だから正規表現みたいなもんじゃない?

正規表現をJavaのメソッドで構成したら、それは可読性が
高いと言えるんだろうか?
0086デフォルトの名無しさんNGNG
>>82
うちの職場では、ExcelにDBの定義書を書いて
スクリプト一発でsqlに変換してる。
0087デフォルトの名無しさんNGNG
>>86
オレはスクリプトじゃなくて、た
VBAでさらにテーブル生成までを作った。
(外部キーやPKも)
だけどERwinがあればERwinが一番いい。
0088デフォルトの名無しさんNGNG
>>82
>普通にJDBCでやるとして、テーブル作成だけTorque使うってのもありだと思う。
うちは結局これで、ほとんどOMクラスは使ってなくて、
直接SQLを書いてTorque経由で投げてる感じ。
ConnectionPoolの管理とか考えてないのでそれだけでも楽っちゃ楽。

>>83
最近思うんだけどタダ単にマークアップ付き言語が読みづらいだけなんじゃなかろか。
慣れなのかもしれないけど・・・。
少なくとも一般的なプログラミング言語の書式と混在し得ないような気がする。
Javaの中のSQLはうざいけど、流れをそのまま読めるし。

>>86
>>87

俺、自マシンからは直接通信できないネットワーク(要するに客先なんだけど)に
開発環境を構築しなくちゃならないことがあった。
Telnet等でいくつかホストを経由しないと接続できない。

まぁレアケースなんだろうけどTorqueのおかげでローカル環境で作ったものを
むこうで再構築するのが割と楽になったよ。
0089デフォルトの名無しさんNGNG
SQLってそんなに学習時間かからんよな
まあ、問題なのはソコではないとは思うのだが・・
0090デフォルトの名無しさんNGNG
ポーティングの問題もあるね。
地獄を見た事の有る奴、結構いるんじゃない?
0091デフォルトの名無しさんNGNG
>>90
そんな恐ろしいんですか?
全然知らんけどっていうかポーティング自体知らんゴメン
0092デフォルトの名無しさんNGNG
JavaでのSQL直書は流れがそのまま読めるので、確かにメリット。

だけど実行してみないとケアレスみすすら分からない。
0093デフォルトの名無しさんNGNG
>>92
プログラム書く前にSQL実行しない?
0094デフォルトの名無しさんNGNG
>>93
簡単な修正なら実行しない
0095デフォルトの名無しさんNGNG
DBシステムにおけるAPの本来の目的は
SQLを発行し、DBへのI/Oだから、SQL生成
プログラムとなっても仕方ないのでは?

もしユーザ(オペレータ)がSQLを知っていたら
(熟知していたら)APなんて必要ない訳だし。

DBシステムなら、必ずしも一つの言語から
アクセスするということでもないし、
(パッケージで単にDBをストレージとして
見るなら別だけど)
言語別にDBアクセスの方法を覚えるの
もなんだかなぁとも思える。

WEBにしてもそう、最終的にはHTML
(やJavascript)で表現するから、
HTML生成がゴールとなってもしょうがない。
0096デフォルトの名無しさんNGNG
>>94
おれは、修正云々じゃなくて、
>(プログラムを作って)実行してみないとケアレスみすすら分からない。
ということに答えたんだけど...
もし、(最初にSQL実行)してないのなら
まず目的のSQLを書いて実行してから
プログラム製造することを勧めるよ。
そうすれば、ミスもわかるよ。
0097デフォルトの名無しさんNGNG
>>95
そうなんだけど、>>92の言うように動的SQLや動的HTMLはコンパイル時点では
ケアレスミスさえ発見できないという問題があるから、そういった部分をTorqueや
JSP+タグライブラリなどで局所的、静的に正しさを保証できる範囲に押し込めて
おいて、あとの全てはJava言語の世界で解決しようという思想なんじゃないかな?
0098デフォルトの名無しさんNGNG
>>97
>コンパイル時点では
>ケアレスミスさえ発見できない
なつかしい...PowerBuilderという
開発ツールは、埋め込みSQLでも
コンパイル時点でエラーが分かった。

だけど、そういう仕様だと、
コンパイル時点でDBに接続しておかないと
SQLエラーか分からないし(そうだよね)、
接続してないと、ワーニング出まくった
けど、それでもいい?
確かにSQL解析は便利だったけど、
プログラム書くときはそっとしておいて
欲しいと思ったのは贅沢だったかな。
0099デフォルトの名無しさんNGNG
>>98
TorqueやWebObjectsはコンパイル時にいちいちSQLを投げたりしないよ。スキーマ定義
(と各DBMS固有のSQL方言についての知識)さえ持っていれば「エラーにならないSQL」を
生成することは可能だし、そうしょっちゅうスキーマが変更されるわけじゃないから、常に
最新の情報をリアルタイムで取得する必要はないと思うけど。
まぁフリーフォーマットの埋め込みSQLの正しさをチェックするには、実際にDBMSに
投げるか、同等の構文解析エンジンを持つしかないんだろうけど。
0100デフォルトの名無しさんNGNG
>>90-91
あるベンダのDBからほかのベンダのDBに移行するような場合の問題だよね
たしかにちょっと特殊なことをやろうとするとすぐ面倒なことになりそうだ




0101デフォルトの名無しさんNGNG
最終的にはJDO準拠のものか、EJBのCMPに落ち着くような気がする。
■ このスレッドは過去ログ倉庫に格納されています