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
0653デフォルトの名無しさん
NGNG文字コードなんて複数あるんだし。
0654デフォルトの名無しさん
NGNG1つのカラムに、PHPのオブジェクトをシリアライズしたやつが入ってるYO!
氏ね
0655デフォルトの名無しさん
NGNGそだね。
DbUtils程度で押さえておくのも一つの手かもね。
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNGOracle使ってると、それでも問題は出る。
なにがへぼいって、varchar2をバイト数で指定するところ。
UTF-8だったら1文字当たり3バイトで計算とかだし。
ありえなくなーい?
0658デフォルトの名無しさん
NGNGだから、標準になったらだろ?
0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNGつくれるやつは、いろいろいるだろうが、
画期的な発想が思い付けないよね。
結局あれと同じジャンみたいな。
も前はどんなのが欲しいんだ。
0661659
NGNG例えばSQLを外部で管理( XML(SAP),DB等 )っていう方法
外部ファイルにオリジナルのSQL,INPUTパラメータ等を書く。
次にデータ設定用のクラスを作る。(String, int, Dateなどの動的配列(MAPとか) )
使用方法
1・外部データ作成時のSQL固有のキーを使用してオリジナルSQLを取得
2.INPUTパラメータがあればsetParam( ... ) で設定
3.SQLを完成させ、DBクラスに渡す。
4.DBクラスがDBのメタデータを元にデータ設定用のクラスの
適切な型にデータを設定
5.データ設定用クラスから列名で値を取得する。
肝はメタデータを使うってとこですね。
かなり思い付きです。
つっこみお願いします(w
0662デフォルトの名無しさん
NGNG複雑なSELECTの扱いや、
VIEWやSTOREDなどと、どう切り分けるかが鍵ではないでしょうか?
その辺りはどう考えています?
0663デフォルトの名無しさん
NGNG如何に汎用にするかが問題になるわけで。
0665デフォルトの名無しさん
NGNGUNIONで完全外部結合やったりとか、OracleでSELECT 〜 START WITHやったりとか?
0666659
NGNGそれは大丈夫。
Statement$executeQuery後のResultSetを元に最終的に取得する列名などが分かるので。
あとHashtableを継承したクラスでgetメソッドをラップすれば使用する側でキャストする必要がなくなります。
(getString,getIntとか)
ストアドも同じ感じでいけそうです。
0667デフォルトの名無しさん
NGNG外部ファイルに書く必要がでてきちゃって何したかったのかわからなくなる罠
0668デフォルトの名無しさん
NGNGそこらへんあきらめて、代わりにただのSQL文を簡単に使える仕組みを提供するとか、、?
0669デフォルトの名無しさん
NGNGそれって、Sqletとあまりかわらないような。
http://homepage3.nifty.com/seasar/nazuna-sqlet.html
JavaBeansやMapへのマッピングまでやってくれるけど。
0670デフォルトの名無しさん
NGNG諸悪の根源はベンダそのもの。準拠しないC++コンパイラが
ろくでなし扱いされるのとは大違いだな。まったく。
0672デフォルトの名無しさん
NGNGスレ違い気味だが、激同。
ベンダー拡張使うなとは言わんが、互換性は持たせとけよと思う。
でも、DB屋さんってそういうとこ全然無頓着なんだよね。
以前仕事した人と話したとき、「なんで?DB違うんだから、当たり前じゃん」ってな反応だった。
そいつらが変わらん限り、ベンダは囲い込みが出来るわけだし、状況も変わらんなと思った。
0673デフォルトの名無しさん
NGNGそれはResultSet->Objectの話でしょ?
それ自体が問題になることはあまりないように思う。
そうではなくて、クエリの自動生成をどのように行うか
ということ>662は言いたかったのではないのかな?
実際そこがキモになると思うんだけど...
0674659
NGNGまさにSqletのように外部ファイルに書くって方法です。
使う側では検索条件があればINPUTを設定するだけ。
でgetString("列名"),getDate("列名")てな感じで呼ぶ。
XMLじゃなくてプロパティファイルにするなら
master.sql_1=select * from hoge where id ={0}
みたいにできるかなと。
…こういうのは使えないですか?(w
0675673
NGNG人によっては使うんでないかと思うよ。たぶん。
誰もが1度は考える方法だと思うし。
個人的に欲しいものは、
1.クエリがDBセーフで記述できる。
2.クエリを記述せずに、ある程度複雑なクエリを発行できる。
かな。
ちなみにTorqueは使いづらいと思っているけどね。
0676デフォルトの名無しさん
NGNGマップしないと、それ以外のすべてが面倒。
0677659
NGNG> 1.クエリがDBセーフで記述できる。
これはTorqueがやってますね。(未実装が多いけどw)
個人的にはSQLは自分で書きたいほうなので今のまま作ってみます。
あとTorqueみたいにたくさんのクラスを自動生成ってのは嫌ですね…。
>>676
MAPを継承したクラスを使えばいろいろできそうですが…。
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNG個人的にはある程度複雑なクエリを書く必要が出てくるんなら
素直にSQL書いたほうが早いと思うんだよね。
少なくともSQLは良く出来た言語だし、RDBのデータをOOAして
作ってきた側からから扱おうと思っても見過ごせないくらいの
ギャップが表面化するだけじゃないかと。
0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNGプログラマにSQLは書いてもらうけど、
底辺のJDBC APIはフレームワークが処理するという
意味では同じだね。
SOA(SQL Oriented Approach)
0682デフォルトの名無しさん
NGNGOracle8が無くなるまでの辛抱だ。
0683デフォルトの名無しさん
NGNG結果わからん→JavaのデバグかSQLのデバグかわからん→1にもどる
コンマやスペースの所為で実行時エラーになるのは正直ウザい。
エラーになりゃまだいいけど、一生エラーにならんかもしれん。
でも、現状のO-Rマッパは、マッピングの設定がもっとウザい。
ってことで、俺はDbUtils。カユいところに手が届いてて良い感じ。
0684デフォルトの名無しさん
NGNGところで DB から Bean を作成する簡単ツールとか付いてこないんすかね?
0685デフォルトの名無しさん
NGNGSQL書かないとね。
0687デフォルトの名無しさん
NGNG>DB から Bean を作成する簡単ツール
禿げしく欲しいが、多種多様のDBに対応させるために膨大なツールになって、
(DBのマイナーバージョンまで対応せんと、型のマッピング変わってたりするし)
「あんまつかえねえなぁ〜」とかなりそう。結局、ExcelマクロとかPerlスクリプトとかで
ゴリゴリ作ってるほうが案外幸せなのかも。ある意味マッピングフレームワーク。
0688683 & 687
NGNGいろいろ試してみて、現状ではそう判断した。設定が簡単で軽いフレームワークが
あれば、今にでも飛びつきたいところなんだが。
0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNG仕事で使えるのはいつになるのやら。
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG特別な事情がなければ今年中は無いんじゃないかなー そうでもない?
新しい仕様はみな微妙なものばかりだし、
すぐ使いたがるやつvs覚える気無いやつで内戦が起こりかねないし
コーディングルールだって直さないといけないからな・・・
0694デフォルトの名無しさん
NGNGそんなもの仕事で使うの?
それはさすがにうちの会社ではありえん。
0695デフォルトの名無しさん
NGNG仕事で使わんな。でも新しい技術使いまくってアピールに
成功してる会社はあるな。ごく少数だけど。そっちのほうが
面白そうだ。
0696デフォルトの名無しさん
NGNG会社の方針としてあるのであれば使えるんだがね。
0697デフォルトの名無しさん
NGNGそのリスクを評価するのがエンジニアの仕事でしょうが
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG評価してるうちに正式版が出るわな
0700デフォルトの名無しさん
NGNGあり物使っても一緒だと思うよ。
金あるなら、MSとかOracleとかに囲われて
楽々やるのもいいかも知れないけど。
0701デフォルトの名無しさん
NGNGJ2SE1.5 をいつもで評価する気?
えらくのんびりしたプロジェクトだな。
0702デフォルトの名無しさん
NGNG自分のリスクを自分で負うのは
違う
たとえ他人のもののほうが自分のものより品質が良くても
0703デフォルトの名無しさん
NGNG自分で創って自分で責任負えばいいじゃん。
それが出来ないから、人を削って製品を買うか、
不具合覚悟であり物検証して使うかしてるんだって。
0704692
NGNG正式版が来年春予定なのよ。んなもんで、DbUtils+1.5の組み合わせも一考の余地ありかと。
一考したけど、やっぱBeanListHandlerでゴリゴリやります。
0705デフォルトの名無しさん
NGNGDbUtilもデータソース使ってるみたいで…。
連携がちょっと厄介かも(w
0706デフォルトの名無しさん
NGNGおまえの頭を最初に書き換える必要があります。
継承して何を書き換えるつもりなんだ?
0707デフォルトの名無しさん
NGNGselect distinct HOGE from HAGE;
はどう書くんでしょう?
criteria.setDistinct();
のあるなし以前に、
Criteria criteria = new Criteria();
criteria.addSelectColumn(HagePeer.HOGE);
HagePeer.doSelect(criteria);
が、
com.workingdogs.village.DataSetException: Only 1 columns exist!
で落ちてしまい、困っています。
0708デフォルトの名無しさん
NGNGSQLと同等なことをするのに四苦八苦するような
フレームワークで時間をつぶすのはもったいないよ。
0709707
NGNGcriteria.addSelectColumn(HagePeer.HOGE);
Criteria criteria = new Criteria();
List list = BasePeer.doSelect(crit);
for (Iterator it = list.iterator(); it.hasNext(); ) {
Record rec = (Record)it.next();
System.out.println(rec.getValue(1).asString() );
}
でうまくいきました。
0710デフォルトの名無しさん
NGNGそーいやカウントの仕方がいまだわからないやw
0711デフォルトの名無しさん
NGNGttp://julp.sourceforge.net/index.html
こんなんどう?
あと、
ttp://homepage2.nifty.com/igat/igapyon/diary/2004/ig040121.html
いが○ょんもなんかやってる。
0712デフォルトの名無しさん
NGNG> いが○ょんもなんかやってる
仕様案見たけど、これって車輪の再発明じゃないの?
そこのレスにあるけど、同じようなもの作ってる人いるし。
DbUtilsは低機能でORマッパーとは言わないかも
しれないけどシンプルで他と違って光ってるな。
漏れも同じ車輪しか作れないけど、誰かドカンと衝撃があるものを
世に出してください。
0713デフォルトの名無しさん
NGNGJDBCと平のSQLを使ったJava<->RDB間車輪として完成したと言っても過言ではないと思う。
SQLになった時点でJavaと接点が切れるという問題はあるにせよ、相当使い易いもの。
後は、手を動かしてフレームワーク作るより、頭動かして発明するしかねえなぁ。
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNGCayenne って他と比べてズバ抜けてるの?
それとも単に今までのORマッパの良いとこどり?
0717デフォルトの名無しさん
NGNG勝手にスキーマ構造を抜いてきてくれるんじゃなかったっけか。
WebObjectsのEnterpriseObjectFrameworkみたいな感じ?
0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNG1テーブルあたり4クラスもできあがるのは、ちょっといただけないのだが。
0720デフォルトの名無しさん
NGNG.NET版O-Rマッパーフレームワークみたいのを提供すると言っておった。
やっぱりデータ中心アプリだとO-Rマッパーが必要になってくるよね。
ということかな。
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNGスキーマのリバースとかできるの?
0723デフォルトの名無しさん
NGNG出来るんじゃないの? ところで Middlegen で DbUtils 用の
Bean 作ったりはでけへんのかな?
0724デフォルトの名無しさん
NGNGtorqueだがbuild-torque.xmlにjdbcターゲットがある。
これ使えば既存のDBからschema.xmlを生成してくれる。
0725デフォルトの名無しさん
NGNGHibernateはMiddlegen + Middlegen-Hibernate(Hivernateのサイトから)で
スキーマのリバースが可能。
0726デフォルトの名無しさん
NGNGEclipseプラグインのjfacedbc使ってもいけそうですね。
0727デフォルトの名無しさん
NGNGMiddlegenの素のままでは融通が利かないかもだけれども、
仕組みは結構単純なんで、自分プラグイン+Velocityで
結構なところまでいけるのでは?
0728デフォルトの名無しさん
NGNGこのレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です
0729デフォルトの名無しさん
NGNGトランザクション管理が楽そうだけど、ググっても情報少ない。
Tyrex は更新止まってるし、JOMT はどうなんだろ。
ORマッパーに付いてるものとかないんかな?
0730デフォルトの名無しさん
NGNG素でSQL叩いたほうが楽ってことに気づいたんだよ
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNGいや、だから SQL は素でたたいてトランザクション管理だけは
JTA に任せようかと。。。まー落ち目ってことなんですね。。。
0733デフォルトの名無しさん
NGNG分散トランザクションの方が主な仕事じゃないの?
ローカルトランザクションは普通にJDBCのConnection#commitでしょ。
XA対応とか調べるのメンドクサイけどな。
0734デフォルトの名無しさん
NGNGEJB みたいに別コンテナまでのトランザクションはいらんけど、
Connection だと複数のクラスにまたがるトランザクションだと
いちいちコネクション渡していくのがめんどくさいなーと。
JTA だったらスレッド内だったら Connection 渡さなくても良いから
楽かな〜と。俺、なんか間違ってる?
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNGなら、ThreadLocalでConnection渡したらどう?
0737デフォルトの名無しさん
NGNGうぉぉ。ありがトン。ThreadLocal って名前しか知らんかった。
トリッキーそうだと思って Jacadoc 見たら、用途にトランザクションID とかって
ありました。これって EJB とかが内部で使ってんのかな?
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNG+BeanUtilsで、SwingともJSPとも相性いいな、それ。
すごい立派なシステム作るわけじゃなければ、それで平のSQL投げるのが
いちばん簡単なのかもね。
結局RDBMS固有のチューニングテクニックとかのお世話になる羽目になった
とき、平でSQL投げているほうが分かりやすいだろうし。
変な仕組みにSQL生成を任せてしまうと、わけわからなくなって困らへん
かな?
SQLを外部ファイルに切り出して、必要に応じてIDかなにかで呼び出す程度
がええのかな。
0740デフォルトの名無しさん
NGNGHibernate + Spring Framework でこんなに簡単にできるよ
http://hibernate.bluemars.net/110.html
0741デフォルトの名無しさん
NGNGこっちも
http://www.springframework.org/docs/wiki/Spring_AOP_with_Hibernate.html
0742デフォルトの名無しさん
NGNG簡単じゃないができてるね。
読むだけで疲れたけど。
Springってすげって思うけど、なんかおやじが説教してるみたいな
感覚するんだよね。
うるせーって感じ。
0743デフォルトの名無しさん
NGNGこの仕事に向いてない人だな。
自由にやられると、周りが困る。
0744初期不良
NGNG依存しないためでもあるんじゃないの?
SQL たたく方が楽ってそりゃそうだけど
じゃあなんで苦労してコストもかけて
こんな事やっているのかと小一時間
0745デフォルトの名無しさん
NGNG本来そうかもしれんけど、俺は DB 置き換えが必要になった
PJ はあったことがない。あー ORマッパー使ってりゃ楽っだったのに!
とか普通はない。あんた、どう?
0746デフォルトの名無しさん
NGNGまともなODB出たら、JavaでRDBとO-Rマッパなんか使う人はいないわけで。
0747デフォルトの名無しさん
NGNG>「思想的にしたくないことをやらなくてすむ」ってとこに意義があるんじゃないの。
結論はこれだと思う。
やっぱりオブジェクト指向な環境では、なるべくSQLなんつー対極的なものは使いたくないな。
ロジック中にSQL埋め込みたくないし(SQLも手続き的ロジックなわけだけど)、かといってSQLを
外出しにしたくもない。
オブジェクトの曼荼羅の中にSQL入れるなんて、清濁併せ呑むって感じがする。
ましてや、WebアプリなんかでPHPの中に、HTMLと一緒にPHPのロジックとSQLを混在させるような
腐った設計なんてのは問題外じゃねーの。
以上、個人的好みが多めだけど、客観的なOOP論は少なめ。これ。
オブジェクト指向は万能ではないってところも押さえないと。ね。
とりあえず、Hibernate / Cayenneマンセー
Torque / JDOはウンコ。
0748初期不良
NGNG確かに DB 置き換えと言う事はあまり無い。
ローカルのテスト環境で別 DB を入れてテストするくらいかな。
けど、プロジェクト単位で DB 入れ替えとか言う話じゃなくて
こっちが複数の DB の独自仕様を意識しなくていい
と言うところじゃない?
思想的に、っていう話もわからないでもないけど、
漏れの場合は必要性如何に関わらず、抽象化を
進めた先に何かがあると信じてついて行く所存なり。
データをグラフ化したら違う何かが見えてきたってな感じのね。
0749デフォルトの名無しさん
NGNGアーキティクチャのことなるRDBのテーブルをマッピングして使う、
なんていうことが当たり前にできるようになりそうだね。
WebObjectsのEOFなんかが、かなり前から実現していた世界だけれど。
それがLGPLやASLなんかの製品でできるようになることの
ビジネス的なインパクトってどのくらいあるかな。
0750デフォルトの名無しさん
NGNGEJB
0751デフォルトの名無しさん
NGNG> とりあえず、Hibernate / Cayenneマンセー
> Torque / JDOはウンコ。
おい、マンセーの理由を教えてください。
0752デフォルトの名無しさん
NGNG個人的好みです。
使いたいものをプロジェクトの性格に併せて選択すればいいです。
JDBC+生SQLという選択肢も当然アリかと。
■ このスレッドは過去ログ倉庫に格納されています