Java⇔RDBのMapping-Frameworkを語るスレ
レス数が950を超えています。1000を超えると書き込みができなくなります。
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
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGもうちょい時間おいてから
スレたてたほうがよかったかもしれない
JDOも発表されてまだまだ浸透してない
この辺はまだ過渡期だからな
0005デフォルトの名無しさん
NGNGまだまだなんかな?
0006デフォルトの名無しさん
NGNGトルクはまだいいけど
比べる対象が無いって言うのが現状(っていうか使わないから知らんだけなんだが・・・)
使ってる人がいればいいんだが日本語Docがなさそうなので
俺にも勉強する気ない。
仕事で、いやがおうにも使わないといけない状況にならないと
読む気しないんだな英語は・・・忙しいし
0007デフォルトの名無しさん
NGNG発表してくるのか
ベンダの動きを見てみないとわからん
まあ、そう遠い日の話じゃないと思うが・・・
まあ、Torqueに限ればロギングが
Log4jっていうのがどうも気に食わない
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGLog4jで、JDK1.4 LoggingAPIにリダイレクトするアダプタ作ればエエヤン。
大して難しくも無いさ。
0010デフォルトの名無しさん
NGNGうん、がんばってみる
0011デフォルトの名無しさん
NGNGコストかかりまくりだよね。最低限コネクションプーリングするとしても、
それプラスこういったフレームワーク使うとしたら、現時点では
トータル的にどれがベストチョイスだろう?
フレームワーク内でCPやってくれるやつってあんのかな?
0012デフォルトの名無しさん
NGNGEJBはCPが当たり前でつ。
001312
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNGEJB 2.0 CMPで、SQL書くのをやめられるよん。
0017デフォルトの名無しさん
NGNGでも、ちょっと情報少ないかな。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勘コード。
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デフォルトの名無しさん
NGNGBEAやIBMのEJBサーバが賢いこととを期待して。
0020デフォルトの名無しさん
NGNGレスありがと。
でも、それだとDBへの問い合わせが恐らく3回発生しますよね。
確かにパフォーマンスが悪い。
もうちょっと僕も調べてみます。
0021デフォルトの名無しさん
NGNG>あと各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の発行回数が気にならなければ、簡単に書けるのですが。
0022lilac
NGNG掲載するにあたって必要なサーバースペースを有料レンタルしています。
お客様に快適なサーバーを提供するためにさまざまなホームページの目的に応じて、
単なるホームページスペースだけではなく、動画やゲームまたは個人放送はもちろん、
そのツールとしてCGI、PHP、SSI、SQLデータベースなどあらゆるサーバースペースを提供しております。
http://www.ebrain21.com/
[email protected]
0023デフォルトの名無しさん
NGNG下記以外ならSQLを書く必要はありません。
一般的に使用頻度の少ない演算子や関数を使用するSQL文の場合。
万が一、複雑なSQLが必要な場合オーバーライドで対応する。
Torqueは設定がめんどくさい。あんな設定が必要なら、チームで開発する場合SQLを書いた方がまし。
しかも設定する情報はDatabaseMetaDataクラスで実行時に取得できる。
EJBやるやつバカ。そのうち無くなるよ!!
0024デフォルトの名無しさん
NGNGこうばしいな
0025デフォルトの名無しさん
NGNGオープソンーヌで公開しる!
ライセソヌは、ApacheヌタイノレかBSDライセソヌで。
0026デフォルトの名無しさん
NGNGあんたのそのやり方のほうが時代遅れなワケですが。
誰がそのフレームワークの仕様を管理し、メンテするの?
誰がそのフレームワークの利用方法を教育するの?
そのコストはタダじゃない。少なくともアンタの人件費分はかかるわけで。
標準仕様なら、多分たくさんのデベロッパがリテラシを各自で抱えることになる
ので、そういうコストが格段に少ないのですよ。こういったことを考えられない、
半可通技術マンセー馬鹿が、よく俺様フレームワークを書いて悦にいってるんで
すよね。あーやだやだ。
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNGじゃあ、どのORマッピングツールが標準仕様となって
将来に渡っても安心して利用できるかどうか判断できるのかと問い詰めたい。
ないならないで作るのが正しい技術者の態度だと思うんだが。
そうすれば、少なくとも自分の面倒みているプロジェクトでは安心して利用できるじゃん
一知半解たあ、>>26のことじゃないの?
0030デフォルトの名無しさん
NGNG別に将来の話をしてるんじゃない。
今すでにあるものが使えて、多くの技術者に認識されているものなら、
独自仕様突っ走るよりいいんじゃないの?
ってだけなんだけど・・・・
003126
NGNGという方針で固まっている。(細かい仕様はシバラク右往左往するかも
しれんけど)
遠い将来にわたって使用できるものなど必要ない。なくなるんだから。
0032デフォルトの名無しさん
NGNG>>29でデファクトスタンダードになる候補があるのに実装するのはアフォと言いつつ
>>31では現状の実装でデファクトになるもんなんざあないとおっしゃる。
あと、ちょっと別の話になるけど、
EJBってEJBコンテナが無いと利用できないんだよ?知ってる?
0033デフォルトの名無しさん
NGNG取得した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デフォルトの名無しさん
NGNGEJBコンテナは、今日びオプソ版もベンダ製無料実装もありますし。
0035デフォルトの名無しさん
NGNGうーむ。DBアクセスをSQLレスで手軽かつ柔軟に実現できるフレームワークとして
Torqueに期待したのですが、今の状態ではやっぱり使えないですねぇ。
EJBもEJB-QLの機能は貧弱だし、BMPにすると結局はSQLを記述する事になるしで・・。
0036デフォルトの名無しさん
NGNG暗黙の了解があるのだろうか。
0037女□
NGNGSQLに強い奴一人連れてきて
そいつに仕様叩き込んで 必要になりそうなセレクト文は全部viewにさせて
アプリからの呼び出しは 「select * from びゆ where ふがふが」 のみにする ってのが最強だと思ってたんだけど
最適化されたSQLが残って メンテするやつも勉強になるし
更新系は業務ベースで更新対象をモデル化して、モデルクラスをポコポコ作って実装してもらう
コネクションの管理(取得と返却とコミとロルバク)はモデル達の基底クラスにやらせる
更新系は長くて複雑なSQLなんて出てこないだろ(甘いか)
0038女□
NGNGSQLは手でモロに書くものだと思ってるから かなり受け付けない
オラクルしか使ったことないからこんな考えになるんだろうな
0039デフォルトの名無しさん
NGNGEJBの目標は、ストレージの形態に依存しないインターフェイスにすること。
RDBだろうがOODBだろうがebXMLだろうが、未知のより進歩的なストレージだろう
がシームレスに使えることが目標なのよ。
だからEJBは、RDBに対して最適化されたインターフェイスが提供されるわけじ
ゃないのよね。RDBから自由になるって言う発想は、想定外?
004039
NGNG0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG> RDBだろうがOODBだろうがebXMLだろうが
これって、多次元DBについても言える?
実装はともかく、方針とか、目標とかの話で。
0043デフォルトの名無しさん
NGNGかなり使えないっぽいんだけど。
0044デフォルトの名無しさん
NGNG0045女□
NGNG>RDBだろうがOODBだろうがebXMLだろうが、未知のより進歩的なストレージだろう
>がシームレスに使えることが目標なのよ。
DBにあんな皮こんな皮かぶせてjavaで使えるようにするより
javaに合わせたデータベース作った方が早いと思うんだけど
なんとかを継承したクラスでstore()メソッド呼んだら
テーブルにデータが保存される(テーブルなかったら勝手に定義される)とか
そういうのはないのかね
0046デフォルトの名無しさん
NGNGDWHとかOLAPとかはOut of 眼中じゃないの?
0047デフォルトの名無しさん
NGNGEJBが目指しているのもたぶんその辺。
ObjectStore等のODBもそんな感じ。
でもどれもこれも不完全で不満だらけなのが現状。
0048デフォルトの名無しさん
NGNG今時、SQL知りません、わかりません、かけませんなんてやつ居ないでしょう。
0049デフォルトの名無しさん
NGNG0050名無しさん@Emacs
NGNGでてキソウデ怖いんですが。
0051デフォルトの名無しさん
NGNGベンダ固有の瑣末なテクが必須っぽいので手を出しかねてます。
0052デフォルトの名無しさん
NGNGTorqueやらJDOやらの中途半端なマッピングライブラリが赤子のように
感じる。売り物だけど安いし。
SQLなんか書く必要無し。RDBのスキーマ情報を自動でブッコ抜いてきて、
クラスにマッピングされたものと、アクセスに便利なメソッドを自動生成。
しかし知名度も低くツブシが効かないという罠。
シロウトにはオススメできない。
0053デフォルトの名無しさん
NGNGsqlなんてselect,insert,update,deleteくらいしかないもんな。
やりたい事がわかってれば、あとはリファレンスでも見れば
さくっとSQL文が書けるよ。
0054デフォルトの名無しさん
NGNGよりよいハードを買ってくれというものだから、
パフォーマンス云々は関係ないんだろな。
0055デフォルトの名無しさん
NGNG>シロウトにはオススメできない。
知名度が低いっていうのは、確かに致命的だよね。
永遠に自分が保守できるはずもないし。
0056デフォルトの名無しさん
NGNG結局、どんなにいいものかよりも多くの人に認知されているかが重要ってことなんだね。
だからオリジナルフレームワークが嫌われる。
0057デフォルトの名無しさん
NGNGこのテーマのスレ、待ってたよ。
0058デフォルトの名無しさん
NGNGつこうたよ。認証処理程度だけどね。
IDEとかでコード書きやすくなるのがうれしかったくらいかなぁ・・・。
どっちかっていうとOMクラスよりはデータの吸出しとか
HTMLで定義情報はいてくれたりする事のほうがうれしかった。
RDBに接続してschema.xmlを自動で作ってくれる機能があるのを
最初から知ってればもっと楽になれたんだろうけど。
AntタスクなのでEclipseあたりのIDEとうまいこと統合できるといいのだがねぇ・・。
0059デフォルトの名無しさん
NGNGこれでなんとか・・・・
「Java開発にはJavaデータベースが自然」――米ポイントベース社長
http://itpro.nikkeibp.co.jp/free/NC/NEWS/20030402/1/
0060デフォルトの名無しさん
NGNGEclipseにシェアを食われつつあるJBuilderの二の舞を踏まないことを祈るばかり。
0061デフォルトの名無しさん
NGNGむしろそのPureJavaRDBMSをただで配布して欲しい
0062デフォルトの名無しさん
NGNG開発用はただで手に入るね。
0063デフォルトの名無しさん
NGNGRDBMSである以上、セマンティックギャップは同じようにあるのだがね。
0064デフォルトの名無しさん
NGNGこういうのもあるが
http://hsqldb.sourceforge.net/
"hsqldb is a relational database engine written in Java"
だそうだ。
0066デフォルトの名無しさん
NGNG4月号に載ってます。
あと技術評論社の「Jakartaプロジェクトテッテイ攻略」にも載ってました。
ただ、少し詳しくいじりたいと思ったらJakartaのページを読むしかないのですが、
余り詳しくは書いてないので、情報収集は結構大変。
Ja-Jakartaにはチュートリアルなどの和訳が有ります。
http://www.jajakarta.org/
http://www.jajakarta.org/turbine/sharing.html
個人的には
・3つ以上のテーブルのJoinがサポートされていない
(2回以上のSQL発行が必要、Viewを使えばよいのかもしれませんが)
・DB依存の書き方は結局残る。(レコードのロックとか)
・普及していない。日本語の資料が少なくTorqueを使える技術者が少ないので将来の保守が心配。
ので、今自分が担当しているプロジェクトで使うのは止めました。
0067デフォルトの名無しさん
NGNGhttp://my.vector.co.jp/servlet/System.FileDownload/download/ftp/0/279026/pack/win95/game/table/pachinko/sikisai.lzh
0068デフォルトの名無しさん
NGNGLZHに直リンするスクリプト死ね。
0069デフォルトの名無しさん
NGNGどっかで聞いたことあるなと思ったら
ポイントベースってSUNONE4に入ってたのを思い出した
SUNONEインスコしたときに「何だコレ?」と思いつつも
一応、インストした覚えがある
>>62のいうように開発版だとは思うが・・・
ちょっといじってみるかな
0071デフォルトの名無しさん
NGNGTorqueってpreparedStatementみたいなSQLのプリコンパイルって
できるの?どうやってやるんすか?
基本的にORB全般的にプリコンパイルはできない?
ただでさえ遅いのに、これできないとつらいなー。
0072デフォルトの名無しさん
NGNGソースを少し読んでみましたが、たぶんTorqueでは無理だと思います。
毎回Statementを作成し直してるみたいです。
0073デフォルトの名無しさん
NGNGセンキュ!
でも、もうTorque使用することになったんだよなー。。。
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
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でも、いまいち馴染まない気がする。
この種のデータバインド機構を使うなら、ある程度割り切らないと
駄目なのかねえ。
0175172
NGNG顧客を表す以下のテーブルがあるとします。
create table employee (
id numeric,
name varchar;
manager_id numeric
);
idはキーであり
nameは名前
manager_idはマネージャのid(自己参照)が入る
//片方のテーブルにe2というエイリアスを設定する
criteria.addAlias("e2", EmployeePeer.TABLE_NAME);
//idが1であるレコードを検索対象とする
criteria.add(EmployeePeer.ID, 1);
//managerのidが1であるレコードを検索対象とする
criteria.add("e2.id", 1);
//自己結合の設定
criteria.addJoin(EmployeePeer.MANAGER_ID, "e2.id");
0176デフォルトの名無しさん
NGNGViewをつかったほうがパフォーマンス的にもいいと思うんだが。
0177172
NGNGあるテーブルを結合させる処理を1000回行ったところ
JDBCを直接操作する処理では平均で1.8秒かかったのに対し
Viewを使用したTorqueでは2.3秒
Viewを使用せずにTorqueの機能を利用して結合させたところ3.4秒でした。
0178デフォルトの名無しさん
NGNG哀しいけれど、O/Rマッピングツールの目的は
ObjectをRDBにどれだけ楽して格納するか、であって、
RDBレコードを如何にしてObjectとして扱うか、が目的では
ないんだよね。
なので、行儀正しく正規化されたDBありき、だと
ツールの特性を梃子にした生産性の向上は実現しづらい。
なにごとも適材適所。
照会系は「JDBC for Reading」で割り切るのもテかな、と
あらゆるオブジェクトを透過的に操作できるのは
理想的だけれど、スループットを考慮にいれると、
現状ではなかなかそうもいかないですよね。
切り分けの境界をどこに置くかがなかなか難しいんだけれど、
そこをきちんと定義できてこそエンジニアかな、とも思う。
私もここらへんはまだまだ手探りなので、
このスレの意見はとても参考にさせてもらってます。
0179172
NGNGTorqueの場合はかなり高速化されたので、こちらはさぞ早いだろうと想像しましたが
何と平均が1.8秒→2.1秒と0.3秒もダウン
0180デフォルトの名無しさん
NGNGどのようなスキーまでどのようなSQLを実行したかによってスピードなんて変わってくるからね。
1000件で2秒前後ならそんなもんでしょ。
そこまでクリティカルなスピードを求められるならTorqueやJDBCをじかに呼ぶより
EJBを導入することを考えたら?
OJBならEJBと連携できそうだし。
0181172
NGNGEJBも勉強してます。
とりあえず今は、お手軽にDBを操作する方法は無いかな〜と思ってて。
前は「俺実装」のライブラリを一生懸命作ってたんですが、
そんなのより世の中に有る物を使ったほうがいいかなって。
0182デフォルトの名無しさん
NGNGTorqueとOJBを試してみたので(個人的にはOJBが簡単で好き)
今度はExpressoを試してみようと思います。
0183デフォルトの名無しさん
NGNGhttp://219.96.231.242/wizonline/
2chスレ
http://game3.2ch.net/mmominor/dat/1053536167.dat
0184デフォルトの名無しさん
NGNGtutorial1のサンプルアプリを動作さすところまで実験しました。
でも、最初からアプリを作成する方法がよく分かりません。
PostgreSQLで動かそうと思っても、最初にOJB_HL_SEQテーブルが無いとかのエラーがでるし。
「何そのテーブル?」って感じでした。
一から作成しているチュートリアルって何処かに無いですか??
0185デフォルトの名無しさん
NGNG>そこまでクリティカルなスピードを求められるならTorqueやJDBCをじかに呼ぶより
>EJBを導入することを考えたら?
EJBってJDBC直より速いか?
0186デフォルトの名無しさん
NGNGそれは断じてないでしょう。
0187デフォルトの名無しさん
NGNGEJBもJDBC使ってるのですが
0188デフォルトの名無しさん
NGNGだから、JDBCを直接つかう場合よりもオーバーヘッドが増えて遅くなるって話だろ。
0189172
NGNGSELECTを試したのですが
idとnameを持つテーブルを1000回selectする実験では
JDBC:1311ms
Torque(BasePeer#doSelect()を使用):1505ms
Torque(BasePeer#doPSSelect()を使用):914ms
OJB(PersistentBroker使用):3625ms
と、言う結果でした。
なぜかTorqueのdoPSSelectが最強です。
OJBはリフレクションを多用しているせいか、かなりの低パフォーマンスですね。
0190172
NGNG0191172
NGNG0192デフォルトの名無しさん
NGNG複雑なアプリでどの程度効用が得られるかはかなり疑問だが。
0193山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG全体的な視野で JDBC直 と EJB(CMPEntityBean) とのパフォーマンス比較を
すべきだと思うよ。自分でJDBC直でちまちま実装するより、EJBコンテナに
任せたほうがより効率的に処理することもあるんでないの?
0196デフォルトの名無しさん
NGNGJDBC for Readingパターンっていうわけじゃないけど、
通常はEJB(EntityBean)を使いつつ、
性能がほしいときに、DAO(JDBC直)って使い分けてる。
0197デフォルトの名無しさん
NGNGhttp://www.javalobby.org/thread.jsp?forum=61&thread=7836
0198デフォルトの名無しさん
NGNG自分のプロジェクトはどう作っていけばいいのかの話の説明がないような?
0199デフォルトの名無しさん
NGNG簡単な例で説明します。
社員の出勤表があります。
テーブル名はもちろん社員番号で割り振っています
カラムは[日付、その日の成績、出勤時間、退勤時間]
(実際には、10項目ぐらいカラムがあります)
となっています。
で、当然同じ形式で社員の人数分あるわけなんですが
このテーブル全てをマッピングしようと思い、
トルクとか使おうと思ってるんですが、
テーブル名ごとにマッピングのクラス書かないといけないんですかね?
いままでJDBC直のばあい、入力した社員番号から
テーブル読み出せるんですが
トルクとかのラッピングツールはテーブルごとに
クラス作りますよね?社員全部のクラス全部作らないといけないんでしょうか;
あとは、テーブルの合成も考えました。カラムは今までのやつ+社員番号が
入るカラムを追加して(重複許す)全部一つにまとめるって言うやり方です
でもできれば社員ごとに一個ずつテーブル設けたいのです
なんか、うまいやり方ありませんか?
0201デフォルトの名無しさん
NGNGテーブル設計が激しく間違っていると思う
0202デフォルトの名無しさん
NGNG社員ごとにテーブルがあるってこと?
それがそもそもありえない。
RDBMSの勉強からやりなおした方がいいんじゃないの?
0203デフォルトの名無しさん
NGNG入るカラムを追加して(重複許す)全部一つにまとめるって言うやり方です
このテーブルを最初っから作ればいいんじゃないの?
粗度が細かすぎるよねその設計だと・・・・
0204デフォルトの名無しさん
NGNGレスありがとうございます
すいませんDBの勉強しなおしてきます
ちなみに私が設計したわけではありません;;
なので、とりあえずデータ構成の変更を要請してみます
ありがとうございました
0205デフォルトの名無しさん
NGNGだれの設計かは知らんが、もし先輩社員の設計ならば
職場を変えたほうがよいかも。
0206デフォルトの名無しさん
NGNGありがとうございます
いちおう、再設計を任せてくれそうになりました
社員番号と日付を複合キーにして>>203の言うようにしたいと思います
ただ、テーブルの行数が多くなりますが
dbの設計って言うのは何千行でも何万行になったとしても
こういう作り方をした方が良いのでしょうか?
聞いたところによると、最初の設計者が
あまりひとつのテーブルに行が多いとダメ見たいなことを言ったらしくて
そういう使用になったそうです
いちおうオラクル6なんですがオラクルなら何千何万行でもOKですよね
0207あぼーん
NGNG0208デフォルトの名無しさん
NGNGまずはその最初の設計者を殺しましょう。
Oracle(というか最近のフリーのRDBもふくめて)でシステムを組んでて何千何万程度のレコードを心配するなどありえない。
0209デフォルトの名無しさん
NGNG君の会社すさまじくレベル低いよ。大丈夫か?
DB設計の初心者本で正規化について勉強しとけ。
技術力低い分、特定業務に特化しているのだろうから、そのあたり盗んどけ。
自分の思い通りにプロジェクトを進められるのも、
小さな会社の利点だから、いろいろ挑戦してみな。
ある程度力つけたら転職しよう。
0210デフォルトの名無しさん
NGNG言い忘れていましたが、私の会社は基本的には
そういう開発の会社じゃないんです
つまりその、皆はっきり言ってプログラミングとかそういうことは
ド素人でして今回私が抜擢されたのもただ単にちょっと知識
あるからという理由です
自社で済むことは自社内でって言うやり方でして・・・
なので、そのプログラム作ったからといって給料とかupされるわけではありません;;
実際にはセールスが本業なもので・・・
とにかく、後継に迷惑かけないようにしっかりしたもの作ります
転職ですか・・・プログラマはわたしは無理ですね
ココに質問する時点でセンス無いと思ってますから
0211デフォルトの名無しさん
NGNG逆にそんな立場でTorque使おうって技量に感心。
素直にそう思った。エンジニアじゃないのね。
0212209
NGNG少なくともRDBの基礎は学んでおいたほうがいい。
あまり良書とは思わなかったが、入門テキストとして、
「データモデリング 基礎講座」
http://www.seshop.com/detail.asp?pid=1401
最初からしっかりしたものを作るのは不可能なんで、
何度か作り直すつもりで、気軽にね。
自社で開発するにしても一人ぐらい社外の人を入れないと無意味だと思う。
顧客と開発が近いのは利点だけどね。
0213デフォルトの名無しさん
NGNG扱い易いか考えてみ。(それを徹底的にやるのが正規化)
[社員の給料]←[社員の特定]←[部署の特定]←[会社全体]
みたいな。簡単で申し訳無いけど。
0214デフォルトの名無しさん
NGNGJavaなら知っていたので「それでよければやりますが?」
といったら、「じゃ、君やりなさい」と言われました
自社のポータルも私作ったんですが
DB関係はまったくの初めてなのでどうなることか・・・
>>212
システム部といっても私一人ですよw
そういう部署設けるぐらいの会社なら
最初から外部に頼んでますよきっとw
リンク先覗いてみますありがとうございました
>>213
ありがとうございます参考にさせていただきます
0215213
NGNGする事になると思うけど(笑)その時にはきちんと"全体設計"、"DB設計"、"コーディング"とか、
各フェーズを明確に分けて考えた方がいいよ。それぞれの担当になったつもりで。
その方が完成までの期間とかの見積もりも出せるし。
今回の件では、やりたい事は明確になっているんだろうから、とりあえずDB設計が先か?
その設計次第でコーディングの内容も変わるだろうし。
とりあえず、概算見積もりにはいつも10%上積みの方向で上司に報告っと。(笑
0216デフォルトの名無しさん
NGNGTorque自体のドキュメントやツールがロクに整備されていなかったり
チュートリアルと実際の動作が異なる場面が多かったりなので頑張れ。
0217デフォルトの名無しさん
NGNGまだCastorの方がいいかも。
XMLとの親和性もいいしね。
なんならRelaxerという手もある。
0218デフォルトの名無しさん
NGNGJDeveloper高いけど・・・。
0219デフォルトの名無しさん
NGNGなんでOracle6なんだってつっこみはなし?
あと、さすがに数百万行とか数千万行になるようなテーブルとかならデータ量は気にするよ。
でも、こんなの出てくる場面がかなり限られるので気にしないほうがいいね。
0220デフォルトの名無しさん
NGNG直接JDBCに流し込んだほうが効率いいんだよなー。
それでもプロジェクトで使うって決まってるから使うんだけどね。
レコードをオブジェクトにして、getsetでデータを加工する。
だから件数が多くなればなるほど処理時間が長くなるし、JVMのヒープも
多めにとっとかないとパンクする。
プログラム組んでるとJavaって感じよりCOBOLって感じがする
COBOLもSQL組み込めるけど、Keyをセットしてデータを取り出すって手法似てる
って意味です。
0221デフォルトの名無しさん
NGNGSQLと、プログラムのロジックの記述を
うまく組み合わせることが出来ていたのに
なぜわざわざ。。
仕方ないからやってるけどさ、
逆に、カラム増やすことになって困るのは
CMPや、Torqueのほうだってことだよ
俺個人のプロジェクトのとき
頻繁にテーブル構成変えることあったが
SQL生だとすぐに移行できるが
CMPとかだとちょっとね・・・
動き出すまでに、1時間ぐらい躊躇う
0222デフォルトの名無しさん
NGNG漏れもSQLを生成させて実行、その後はResultSet、
もしくはVectorを返して扱った方がいい。
更新系もSQLを生成してExecuteでぶち込む。
そういうメソッドを持ったクラスの方が
テーブルマップドクラスなんかより
よっぽどビジネスロジックに即している。
SQLについては、ビューやストアドを
使ってシンプルにさせることは
追求しなければならないと思うけどね。
0223デフォルトの名無しさん
NGNGだいたい、JavaにおけるDBのラッピングなんて
JDBCドライバで十分だよ
それにいまのJavaプログラマは
環境依存になるととたんに触手を引っ込める
DD書くのも環境依存なDDが必要になると
いやがるな。まあ、それは俺もそうなんだが・・・
あと個人的な意見では、>>222も書いてるように
SQLの使い方、ストアドの使い方その他もろもろの
細かい設計までやれるのはとても興味深い
パフォーマンスも追及できるしさ・・・
まあ、仕事では再利用性などを考えて
クラスの数が多くなってもいいからデザイン優先じゃない?
まあ、仕事だからやってるし勉強するけど
おれは、今のこの現状を少し遠目に見ている
0224デフォルトの名無しさん
NGNGDBとオブジェクトのマッピングは、所詮
不毛な努力なんじゃないかと。
そういいつつも、何かうまい方法があるんじゃないかと、
つい方法を追ってしまうのだよねえ。
0225デフォルトの名無しさん
NGNGだって、そのままSQL発行すりゃーいいのに
わざわざ、オブジェクトにsetで格納して
向こうに届いたら、getでとりだしてデータベースにインサート
どう考えても二度デマだろ?
向こうで取り出しやすいようにオブジェクトの
構造もワザワザ考えなきゃならんし・・・
DBからデータ取り出すときなんて、
余計なカラムまで取り出したくないのに、
プログラム的には一度に取り出したほうが楽なので
不要なデータも取り出してしまう・・・
しかも、コレクションで帰ってくりゃ
イテレータで取り出し&キャスト
SQLなら他のUtilクラスにPreparedStatementのSQL文を
static フィールドで保持しておいて置けば
意外にコードはすっきりだ
ストアドもそう。
だいたい、SQL直ってそんなに難しいか?
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNG無意味な事してんな(w
インデックスの張り方とかテーブルの列の順序とかstmt、rsのCloseのタイミングとかは?
0228デフォルトの名無しさん
NGNGSQL知らない奴らと一緒にやってると大変だよな。
0229デフォルトの名無しさん
NGNGおれなんてSELECT UPDATE INSERT DELETE
FROM ORDER BY ぐらいしかつかわんぞ
あとは、データとってくればこっちで何とかするやり方だよ
ストアドだってその場その場で本開けば解決できるしよ
0230デフォルトの名無しさん
NGNG結局俺もJDBC直でやっているわけだが理由は結局O-Rマッピングがかったるいから。
でも、JDBC直だといまいちだなと思うこともまた事実なわけよ。結局Javaの世界
ではやっぱりObjectで扱っているわけだがResultSetからObjectへの変換および
その逆がうざい。かといってODBはよくわからんし。
0231230
NGNG結局
(1)オブジェクトをなんでもかんでも叩きこめる
(2)問い合わせ言語が存在し必要なオブジェクトがひっぱりだせる
の2条件が成立すれば良い訳だ。なんとなくxpath + XMLDatabase + relaxer
でよさげなのが出来そうだな。
0232デフォルトの名無しさん
NGNGオブジェクト投げたら勝手にインサートしてくれるものだと思ってた
たとえば、JavaBean同様にアクセサのあるクラスで
それに加えて内部に情報フィールド持ってて
たとえばデータソースURIやユーザ名パスワード
(この辺はプロパティファイルから読み込みでも可)
でもって、
#insert(Object obj)
とか何とかやれば、自動で内部のフィールドを取り出して
自分でSQLを吐いてくれるやつだとおもってた・・・
Torqueぐらいのマッピング程度ならいままで書いてますよね皆さん?
SQL文発行は一部のクラスに追いやって
そのクラスに対して
insert(String[],int,int)や
select(String tablename,String columnname)
とか言うメソッド作ったりしてませんでした?
俺にとってはなんの新鮮味もありませんでしたよ
0233デフォルトの名無しさん
NGNGすれ違いかもしれんが
おれ、いまXQueryって興味あるんだけど
XMLデータベースサーバーって
どっかにFreeのやつない?
俺が探して見つけたのは有料なんだよなぁ
いまは、え〜と名前忘れたが
@ITとかで落としたソフトのライブラリ使って
Javaで遊んでいるのだが・・・
0234デフォルトの名無しさん
NGNGXindiceってApacheのXMLプロジェクトじゃなかったっけ。
0235デフォルトの名無しさん
NGNG挿入と、複数条件検索がコストでかいがするんだが。
インデックスをノードのプライマリキー以外に張ると
エライコトになりそうだし。
XMLデータベースと入っても、ストレージのフォーマット
実装は、XMLとは直接関係無いスタイルにしないといかん
ぽな気がするな。
詳しい方、無知なオイラにおしえてちょ。
0236デフォルトの名無しさん
NGNGSQL直書きだと、オブジェクト指向のメリットであるところの
ロジックの局所化が生かせないような気がしなくもない。
ユースケース単位でがしがしSQL作っていると、
いろんな機能にSQLが散らばってメンテナンス不能、みたいなことには
ならないでしょうか。
SQL直書き派は、その辺のところどうやって解決してますか。
0237デフォルトの名無しさん
NGNGやっぱインデックスとキャッシュなんじゃない。
あとは問い合わせ言語の最適化とかのアルゴリズムとか。
0238デフォルトの名無しさん
NGNGあとで拡張するときとかめちゃ便利だよ。
Torqueつかってます。
0239デフォルトの名無しさん
NGNGSQLはプログラムから見ると単なる文字列リテラルでしかないのでロジックとの結合がぜんぜんない。
例えばResultSetから取り出すときに型を間違えてもコンパイラはぜんぜんわからない。
これがマッピングされた環境だとそんなタコミスは即座に判明し、テスト時間も大幅に減らせる。
最悪テーブルの構成が変わったときなど、SQLだとgrep→SQL変更→ResultSet関連変更などなど件数が多くなるほど悪夢のような作業が発生するが、
マッピングされているとその変更の手間は局所的に押さえることができる。
0240デフォルトの名無しさん
NGNG0241230
NGNG>>234もレスってるがXindiceがFreeで使える。ただXQueryはまだ実装されて
いない模様。
Apache Xindice XQueryはまだサポートされていない模様
http://xml.apache.org/xindice/
Xindice:無料で使えるXMLデータベース
http://www.atmarkit.co.jp/fxml/tanpatsu/18xindice/xindice01.html
>>235
XMLデータベースを使用する時って現状だと性能はあんまり関係ない場合に限
られるんじゃないかと思う。XMLデータである限りその分のオーバーヘッドは
どのみちかかるしな。今のところそれなりのデータ量があるようなプロジェク
トで使う気にはなれないな。
ただ、将来的には面白いと思って見ている。Object<->Relationalの変換を
考えるから色々問題が発生するんだよ。それなら根っこから変換不要のデータ
保持形式を考えてみるのも面白いだろ。
0242デフォルトの名無しさん
NGNGeXistはどうよ
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGを構築しているのか
「Javaアプリケーションシステム」
を構築しているのか
そこら辺の違いだな。
0245デフォルトの名無しさん
NGNGメンテナンス性とかより
学習コストがかかるから避けるっつーのはおかしいかな。
もちろん、プロジェクトメンバー数分ね。
ODB技術全般的にドキュメント類が整備されてないし、
バグもあるだろうし、「なんでできないんだー!」で
結構時間食ったりする。
外部結合とか○○ができないから、そこんとこは
JDBCでよろしくね。なんてことになったら
それこそ、メンテナンス性なんてあったもんじゃない。
実際、システムを保守する人も開発メンバーとは限らないしね。
あと、Strutsほど導入メリットもなく、枯れてないしね。
0246デフォルトの名無しさん
NGNGそれはよく分かる。
RDBのオブジェクトマッピングは、まだ設計技術が
成熟していないような気がするので、
うかつにやってしまうとかえってメンテナンス性が落ちそうな気がする。
この分野はまだまだ試行錯誤の期間が続きそう。
なんか、Strutsとか出る前に、Servletに直接ビジネスロジックを
ゴリゴリ書いていた時代を思い出す。
納期がやたらと早いプロジェクトとかだと、導入リスクが高いので、
SQLゴリゴリの方が、メンテナンス性(メンバーのメンテ能力っていう意味でね)
は高いような気がする。
0247デフォルトの名無しさん
NGNGクエリをクラスにカプセル化するような方法は一般的ではないのでしょうか?
そっちのほうがずっと抽象的な扱いができると思うんですが。
そう思って、SELECT文を記述したXMLからResultSetのラッパークラスを
生成するプログラムを作り中。
0248_
NGNG0249デフォルトの名無しさん
NGNGSqlDataAdapterはとてもじゃないけどカプセル化されてるように見えない。
糞VB再現って感じだなー
0250247
NGNGSqlDataAdapter って3日前に知ったばっかりでした。
0251239
NGNGTorque採用状態からSQL直書きに方針を戻してしまった経験がある…。
0252デフォルトの名無しさん
NGNGそれ自身は何もしてくれない。
DELETE INSERT UPDATEなどの、SQLは自動生成もできるが、手書きが基本らしい。
それで、こいつを経由してDataBaseのメモリーコピーをDataSetというものに入れる。
DataSetに入れてしまえば、DataGridなどのGUI部品と連結ができる。
並び替えやページングのイベントが定義されてるので、
そこにちょこっと、コードを書いてやれば、並び替えやページングのできあがり。
VB厨の俺には小難しくてよく分からんです。
今はEmployeesなどのテーブルクラスと、Employeeレコードクラスを作って、
Employees#selectでEmployeeオブジェクトをhashmapやCollectionに入れてます。
どうやって、DataSetに移行しよう、、、
0253デフォルトの名無しさん
NGNGいやだから、ResultSetをラップするまで行かなくても
SQL文の発行を一部のクラスに追いやることぐらいできるでしょって
言ってるわけさ俺は
そういうクラスを自動で作ってくれるのがTorqueだと俺はおもってる
厳しく言えば、ただそんだけってこと
なので、いままでクラスの設計で半ラッピング状態で
やってきた俺にとって、わざわざTorqueその他のラッピングつーるなんて
使う意味ないねってことよ
>クエリをクラスにカプセル化するような方法は一般的ではないのでしょうか?
これこそオブジェクト指向でないの?
0254そんな低レベルな話よりも
NGNGhttp://strangeworld-honten.com/cgi-bin/bbs.cgi
0255デフォルトの名無しさん
NGNGやはりソースが分かれると可読性が下がると思う。
0256デフォルトの名無しさん
NGNG使うようにしているので、「東京都に在住のユーザー一覧は以下の
ようにして取得してね」みたいな指示だけ出すようにしてる。
プロジェクトメンバーのメンテナンス能力は別に気にならないなあ。
Pref tokyo = PrefManager.fetchPref(13);
UserCriteria uc = new UserCriteria();
uc.setPref(tokyo);
ArrayList users = UserManager.fetchUsers(uc);
0257デフォルトの名無しさん
NGNGhtmlの特にtableのラッパーが欲しい。
JSPで書いてもhtmlとjavaコードが
乱立するし、書いていて非常に不毛に感じる。
細かな設定のできる(例えばカラーで極細の罫線の代わり
をさせたりする)クラスライブラリないかな。
やっぱ、自力で専用ライブラリつくってるのかな。
0258デフォルトの名無しさん
NGNG普通にカスケードスタイルシートかけばいいだけでわ?
0259デフォルトの名無しさん
NGNGゴメソちょっと、舌足らずだった、
tableを生成するのに
(行追加とかcolspan,rowspanや、極細罫線とか)
ラッパーメソッドで細かな設定
ができるクラスライブラリがないかなと。
0260デフォルトの名無しさん
NGNG明確にほしいものができてるみたいだったら、タグリブを自分でつくれば?
0261デフォルトの名無しさん
NGNGhttp://jakarta.apache.org/ecs/index.html
こーゆーのではなくて?
0262デフォルトの名無しさん
NGNG自分で作っているのかなと聞いてみた。
やっぱ、260も作っているの?
(SQLまでもラップするのがあるのだから、
こういうのもあってもいいのかなと思ったわけ。)
Javaコード内で枠だけ作ってさらにコード内で
値をいれたりとかね。
作っても(つくれるかな?)いいけど
その時間があれば、ベタで書いた方が早いかな...
0263デフォルトの名無しさん
NGNGそうそう、こういうのです。
今、ちらっと見ただけですが、
試して遊んでみます。
ありがとうございます。
0264デフォルトの名無しさん
NGNG俺はそこまでのヤツは必要になったことがないから作ったことはない。
が、必要になればまずは探す。
なければ仕方がないのでつくる。
0265デフォルトの名無しさん
NGNGECSって使いどころが微妙じゃない?
0266261
NGNG微妙というか殆ど無いと思う。俺は使いどころイマイチわからん。
ただ、モノ自体は面白いと思うし、将来的には使い道出てくるかもしれないし。
漏れは259が問題にしてるタグとスクリプトコードが混じったりするのは平気。
というかこれからはjellyっスよ(藁
0267デフォルトの名無しさん
NGNG情報激しくキボンヌ
0268デフォルトの名無しさん
NGNG俺もまだまだだとおもう。
ただmiddlegenとかxdocletとか見るにつけ、そういう流れはあるんだろうなーとか。
将来的にORマッピングの強力なツールとなるかもしれない気がする悪寒。
んであとはmavenな。jelly採用してるし、mavenがブレークすれば
ついでにjellyもブレークするんではなかろうか?って勝手に思ってる。
情報はぜんぜんないね。英語の情報もあんま無いし。
1.0リリースするまではCVSでソースとかテストケースをウォッチするぐらいしか
なさそう。テストにあるjellyスクリプトが一番参考になるんじゃないかなぁ。
でもまだタグライブラリの方は動かないの結構多いけど(w
0269デフォルトの名無しさん
NGNGjelly興味はあるんだが取っ付きがなー
0270デフォルトの名無しさん
NGNG説明してもらえる情報源ってないでしょうか?
SQLを知らないJavaPGでも開発できる!
→RDB使うんだからSQLぐらい勉強しろよ!
物理設計が省力化できる!
→RDB使うんだから物理設計ぐらいちゃんとしろよ!
というかE-R系ツールでも結構できるのに。
SQLだと保守性が悪い。
→そのためのドキュメントやん。複雑ならストアドも併用しる。
というわけで、Torqueの特集記事をJavaWorldやWebDBPressで読んだのでつが、
利点が全く理解できないのでつ。
でもJDOは勉強しようと思ってる...
0271デフォルトの名無しさん
NGNGSQL云々かんぬんでなしに、オブジェクト指向における永続化層を自作しなくてよいという話。
これだけでバグと単体テスト工数が3分の1ぐらい軽く減るだろ?
0272270じゃないよ
NGNGつまり、きちんとしたオブジェクト指向による設計を行えば、オブジェクト-DB間の
コードは大体似たようなものになる(というかワンパターンになる)から、そこを
自動生成できるようにします、というのがMapping-Frameworkのコンセプト、という
ように捉えたんだけど、合ってるかな?
0273271じゃないよ
NGNGSQLとJavaはその設計思想からして違うものだからレイヤーとしてO-RMappingを使用して
DBとJavaの層を接続しようと。
EJBなんかもその一部だよね。
0274デフォルトの名無しさん
NGNG単純に、
Person p = new Person();
p.setName("お前");
db.save(p);
Person p2 = db.retrieve(Person.class, "お前");
こういうコーディングができると楽じゃない?
0275デフォルトの名無しさん
NGNGじっさいそういうことやってんだが
絶対にキャストが絡むよな
せめて見えない位置にキャスト隠して欲しい
0276デフォルトの名無しさん
NGNG無理でしょ。ユーザが勝手に定義したクラスの型で返すメソッドを、
どうやってライブラリ内部に作るのよ?
0277デフォルトの名無しさん
NGNGんー。JavaBeansという前提ならばBeanUtilのcopyPropertiesみたいに
リフレクション使えばなんとかなると思うし、実際そうしていると思うんだけど。
0278デフォルトの名無しさん
NGNGユーザが指定したクラスの『インスタンス』は返せるけど、
ユーザが指定したクラスの『型』では返せないでしょ。
インスタンスは動的だけど型は静的なんだから。
>275 はそこにキャストが入るのがいやだといってるということだと思う。
でもラッパーかませばいいだけの話だと思うけど。
あるいはコード生成機能をするようなやつならそこまでやってくれる可能性がある。
0279デフォルトの名無しさん
NGNG素朴な疑問ですが、そういう風にobject風味になればなるほど、保守できる人材
が減ると思うのですが、皆さんの周囲はその議論レベルは理解できる人たち
ばかりということなんでしょうか。
0280279
NGNG本当にSQL直打ちより保守性が上がるのかなと思ったので
それ(保守性を上げる)にはかなり工夫が必要だと思い、
その工夫を理解できる人材がどれだけいるのか?と思ったので
0281デフォルトの名無しさん
NGNGああいうのはどうなの?
0282デフォルトの名無しさん
NGNGあちこちにSQLがちりばめられた状態で、
読み込むテーブルのWHERE条件の変更があったりした場合のことを考えてみそ。
下っ端にSQLなぞ書かせたくないというのもあるな。
複雑なSQLと複雑なコード、どっちがデバッグしやすいかとかも。
0283282
NGNG作っちまえば解決。
0284277
NGNG俺には型にこだわる理由がわからん。
たぶんコンパイル時にタイプセーフが保障されるのを期待してると思うのだけど、
O-Rマッピングに関わらずそれはJavaでは難しいと思う。いまのところ。
Java1.5のGenericに期待っつか。
0285271じゃないよ
NGNG逆だな。
Javaのコードの中にSQLといった別の言語が入り込むほうが保守の手間はかかる。
かからないと思っているのは今までの作り方がそれだけであったからそういう思いをしてしまうだけだと思う。
0286デフォルトの名無しさん
NGNG0287274
NGNGJavaソースなら読んでもいい」と思ってるから、現状でもそんなに
不満は無いねえ。
>>275が書いていたキャストの問題はユーザー定義クラス毎に
ラッパークラスを生成するようにしているから、別に意識してない。
Person author = PersonManager.retrieve(personId);
Book book = new Book(title);
book.setAuthor(author);
BookManager.store(book);
0288_
NGNG0289デフォルトの名無しさん
NGNGスレ違いの指摘だが、そういうのはラッパーと呼ばずファクトリと呼ぶ。
0290274
NGNGそうか、そう言われてみればそうだな。
CastorJDOやHibernateの上に被せて使うんでラッパークラスということに
してしまっていたよ。
0291sage
NGNG上がるけれども、どうしても実行パフォーマンスが
自分でSQL書いてJDBCやる場合よりも劣ってしまうのが
難点。(勿論シンプルな問い合わせなら変わらないけど)
O/Rツールを導入して、取り扱いデータが結構増えてきた
段階でこのことに気づいた。まぁ、最初にちゃんと
検証しておかなかったのが悪いのだけど。
生成されるSQLが効率的なものかどうかは導入前に
ちゃんと確認しておくべきだね、当然なんだけど。
0292291
NGNG0293デフォルトの名無しさん
NGNG融通きくし、安定してると思ってる…
0294デフォルトの名無しさん
NGNGORマッピングツールって別にSQLを簡単に書くためのツールじゃないんですよ。
将来、RDBMS以外に永続化しよーってときに効くツールなんですよ。
そんな実装は一生ありえなさそうですけどね。
0295デフォルトの名無しさん
NGNGXMLDBって最近名前は聞くようになってきたことない?
0296fusainasan
NGNGWebObjectで構築されたと統合2ch型掲示板システム「VanquishBBS」
http://web1.aaacafe.ne.jp/〜tetsuyak/cgi-bin/WebObjects/VanquishBBS/index.html
EOFとか熟知している人が作るとこういうもんもができあがるらしい。
掲示板なのに負荷分散とかヘーキでしやがる。WebObjectってこういうのカンタンなの?
0297fusainasan
NGNG0298デフォルトの名無しさん
NGNGWOでなくてもそういう風に作ろうと思えば出来る程度のことだと思うが。
掲示板程度で開発生産性や負荷分散云々は多分比較するほどの差はつかん
と思うよ。別にAP鯖で負荷分散しなければならんということでもないし
【簡単】の定義も様々だと思うしな。ちなみに漏れは元WO使い。今は使わん。
0299山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0300デフォルトの名無しさん
NGNG容易なのがウリじゃなかったっけ。
0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG掲示板といえども、2chやYahooぐらいの規模になると、アクセスがグッと集中した時とか、
鯖が負荷に耐えられないってことあるじゃん。そんなとき、負荷分散構成になっていて、
30台のサーバーで一つの掲示板データをやりとりできるとなると、
少なくともユーザはイイ思いできると思うんだがなぁ。
証券関連のシステムなんかだとそれがよく実感できるのだが、掲示板でも同様のような気がするんだけどな。
1台の高価・高速な鯖で動かして大量のトランザクションを裁いたとして、鯖が何らかの原因で落ちたときを
考えると負荷分散のメリットは大きいとおもうのだが。
0303デフォルトの名無しさん
NGNGもまいが言ってるのは負荷分散じゃなくて高可用性だな。
目的が違う。
負荷分散のためのオーバーヘッドって結構あるよ。
それはわかってるかな?
0304デフォルトの名無しさん
NGNGアクセス集中時も想定してるから負荷分散でもあってんじゃない。
一台が同時にさばけるリクエスト数とかも、ある程度決まってるわけだし。
でも分散環境で掲示板のデータ保存にDB使うと大変だろうなぁ。
最低限クラスタするにして、DBだけで相当な値段がいきそう…
0305298
NGNGWOだからどうこうって話じゃねぇだろ?ってことを言ってる。
証券関連が云々というが漏れも証券のネットトレーディングの開発
やってる。だから、はっきりいう。掲示板程度では何を使っても簡単の
度合いはそんなに変わらん。ハードの手配で決まる話だ。
その程度でWOを引き合いに出されてもWOが安っぽくみえるだけだ。
証券で使ってるのならそこをアピールするよし。掲示板では迫力不足。
0306デフォルトの名無しさん
NGNGしかも、たかが掲示板で?2chみたいな数百もある掲示板を1台のDBで
運営するつもりか?>>303のいうように、
負荷がおもいきりかかったときはつながりにくい・おちにくいサイトになっているとは
思うが重くなりそうな。掲示板ってレスポンス命じゃないかねぇ。1台のバカっ速い
鯖で運用させたほうが良いよな。
でも、この手のフレームワークを使った掲示板システムはフリーでは観たこと無いからポイントちょっと高いカモ。
(でもウェブオブジェクトってよくわかんない。7万だし、大したことなさそう)
0307デフォルトの名無しさん
NGNG以前は700万だったから、イメージ的なありがたみ?があったけど、
いきなり7万になったら、「?」って思う。
70万だったら「ふむふむ、よさげだけど高いな」って感じか。
結局、モノは凄いのに認知されないんだよな。マイナーだし。
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG>>結局、モノは凄いのに認知されないんだよな。マイナーだし。
モノのすごさを>>306のアプリケーションが証明してるとおもう。たぶん、そこのサクーシャは
WebObjectのすごさを知らしめたく、あえて掲示板というアプリを開発したのかなと妄想炸裂
させたりする。だって、ふつー、掲示板ごときでくらすたりんぐしねーもん(w
0310デフォルトの名無しさん
NGNGその必然性の無さがアピールされてしまってシパーイ(w
いや、EOF最強なんだけどさ、ツブシが利かねんだよね。
0311fusianasam
NGNG必然性がないから、フリーでばらまいていると思う。これでビジネスやろう、なんて人は無いと思うが(w
サクーシャもそこらへんわかってんじゃないの。別にクラスタリングが必須というワケでもなさそうだし。ただその機能もサポートしてるってだけでしょ。
EOFがツブシきかない、というのは、ADOだってJDOだってEOFと同じ道具のウチの一つだから、ツブシきかない、といえばきないような。
掲示板だったらPHPとかPerlなんかで十分。2chぐらいの規模・アクセスだったら考えるけど。
0312デフォルトの名無しさん
NGNGEJB/Servlet&JSPコンテナとして使うとWOらしさが引き出せない。
んで、顧客へのアピール度も低いんだよな。
USはうまくやってるけど、日本じゃ無理だろ。
0313fusianasam
NGNGいくつか製品を評価して最終的にWOにしたな(金融系をメインでやるSIerなんだが)。
他SIerとのコラボはめったにないし、、、まぁ、環境によりけりってところかなー。
確かに便利だよ。EOFってーのは。これぐらい独自性があるとパテントぐらいあってもいいんじゃないの?
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNGいつもはじめじゃないといけないコンプレックスの固まりだな。プッ.
マイナー製品がパテントとるわけないだろ。ましてやアップルだぜ。おまえら正気かよ(w
0316デフォルトの名無しさん
NGNG信者マカーは、EOFなんて知らないんじゃねーの?w
EOFがパテント取ってるのは相当昔じゃなかったっけ?
10年くらい前からある技術だし。元々はNeXTの技術。
0317デフォルトの名無しさん
NGNGWOが幾らいいソフトだろうが、幾らWOに詳しかろうが、それだけじゃ現状では
Web開発者としての市場価値は??じゃない?
WO好きなら趣味でやるのもいいだろうが、趣味のWeb開発なんてそんなにやる
もんじゃなし。というわけで俺は普通にJ2EEに乗り換えたよ。
0318デフォルトの名無しさん
NGNG既存システムの保守をおこなおうというときに、技術者の教育コストを
無駄に抱えないで済む」ことに真骨頂があると思われ。
ある程度開発者が集まるならば、そいつら集めて作らせればいいだけ。
そういう意味で、マイナーフレームワークは存在価値が微妙だし、俺様
フレームワークは無価値。大体同じようなことをやってくれるなら、多少
欠陥があろうとデファクトを使うほうが、お客さんのためだろう。
技術者の興味のコストをお客に押し付けるのは犯罪的だと思う。
0319デフォルトの名無しさん
NGNG激しくムカつくセリフだが間違ってない(;´д`)
0320デフォルトの名無しさん
NGNG漏れ、運用屋やってるんだけど、WOを動かす鯖を預かる事例が、今年に入って
急に増えてきたよ。マジ妄想じゃなくて。需要っつうか、使ってるところは
増えてきているんじゃないの。中には1/2埋めるところもあったし。
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNG以後、こっちでヤレや
WebObjects nsDictionary.valueForKey("5スレ");
http://pc2.2ch.net/test/read.cgi/php/1044328908/
0323デフォルトの名無しさん
NGNGプリインストールなのかCD-Romに入ってるだけなのかは
知らないけど。
JBoss4では独自のJDO実装もできてるね。EJBとどっち
使えばいいんだろう?
0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNGどこかにありますか?
0326デフォルトの名無しさん
NGNG君が作れば誰かは集うよ。
0327デフォルトの名無しさん
NGNG0328デフォルトの名無しさん
NGNGBorland C++ Compiler Ver 4.0J
Jは日本語版の意味だろうね。
0329デフォルトの名無しさん
NGNG面白すぎて腹痛いからWhiteSpaceでも一人でやってろ
0330デフォルトの名無しさん
NGNGhttp://pnuts.org/wiki/index.pnut?language=ja&name=JavaDataObject
0331デフォルトの名無しさん
NGNGhttp://www.gihyo.co.jp/magazines/javapress
立ち読みでざっとしか見てませんが、
日本語でここまでまとまった資料or特集記事って初めてのような気が。
0332デフォルトの名無しさん
NGNG状態にはなりますが、
いくらmapping-frameworkがすばらしく設計されていたとしても、
アプリケーション全体をオブジェクト指向の視点でみると
不自然な設計になりませんか?
たとえばアプリケーションの固定値(環境変数等)をDBで持っている場合、
自分は固定値を管理するクラスをつくろうと思いますが、
何らかの形でDBアクセスするためのクラスを渡す機構が必要になるでしょうし、
単純にユーザIDが1番のレコードの名前を変えたいという処理がリクエストを
またいでいた場合、DBアクセスを減らすためにユーザをマッピングしたクラスを
保持していなければいけなくなります。その際に自動生成されたクラスはいじりたく
ないのでラッパークラスの作成を考えてしまうのですが、
そうすると更新の時はやっぱりマッピングクラスを何らかの形で渡さなければ
いけないのであんまし意味がなくなります。
どちらにしろSQL文を埋め込んでしまうとオブジェクト指向としてはきれいな設計
になるのではないかと思います。
私は、ソースにSQL文を埋め込むのはかっこわるいと思っています。
しかし、フレームワークを使うと設計が前時代的になるのではないかと思っています。
そこがトレードオフなのかもしれませんが、
要するによい設計法やパターンがあればそれを教えて欲しいと思っています。
よろしくお願いします。
0333デフォルトの名無しさん
NGNG今俺XML関連いじってんだが
XPathとかあるじゃん?
あれも、SQLと同じだよな
あれもマッピングするって言うの出てきてるの?
0334デフォルトの名無しさん
NGNGXPath じゃなくて XQuery でない?
0335デフォルトの名無しさん
NGNGXPathです /element/child[@id=01]ってやつね
まあ、XQueryでも俺の言いたいことはおなじなんですけどね
まあ普通にやれば
XPath.newInstance(
"/"
+ ROOT
+ "/"
+ NAME
+ "[@"
+ ID
+ "="
+ bean.getId()
+ "]");
という具合になっちゃうわけです
0336デフォルトの名無しさん
NGNG別にオブジェクト指向を追及すのがフレームワークの役割じゃないだろう。
素人が混ざっている多人数での生産性を安定的に向上させることが
目的だわな。その意味ではオブジェクト指向としての自然さを崩すことも
ありだろう。
0337デフォルトの名無しさん
NGNGrelaxer
0338デフォルトの名無しさん
NGNG同意。あんまりオブジェクト指向にこだわりすぎていると
ろくなことないよね。
特にRDBとオブジェクト指向のミスマッチはいかんともしがたいので
適当なところで割り切るのが吉かと。
0339デフォルトの名無しさん
NGNGそれ大事!
0340デフォルトの名無しさん
NGNGわざわざDB毎に違うSQLをチームみんなが覚えなくてもいいと。
0341デフォルトの名無しさん
NGNGクラスとインスタンスの区別が付いてないみたいだがそれは置いといて…
>たとえばアプリケーションの固定値(環境変数等)をDBで持っている場合、
>自分は固定値を管理するクラスをつくろうと思いますが、
>何らかの形でDBアクセスするためのクラスを渡す機構が必要になるでしょうし、
たいていのフレームワークでは、DBアクセス用クラスのインスタンスを
アプリケーション側で受け渡すような必要は無い。
もっとマシな設計になってるよ。
>単純にユーザIDが1番のレコードの名前を変えたいという処理がリクエストを
>またいでいた場合、DBアクセスを減らすためにユーザをマッピングしたクラスを
>保持していなければいけなくなります。その際に自動生成されたクラスはいじりたく
>ないのでラッパークラスの作成を考えてしまうのですが、
リクエストを跨いだトランザクションをサポートしたフレームワークなら、
自動生成されたクラスをいじる必要は無い(そのまま保持してればいい)。
それと、今時はデータオブジェクトクラスの自動生成は行わないフレームワークの
ほうが主流のような気が。
0342デフォルトの名無しさん
NGNG禿同。
0343デフォルトの名無しさん
NGNGあれってCURRENT TIMESTAMPとか使っちゃったりしてさ。
DB中心で扱うことが多いんだけど(たまたまね。)
日付はJAVA(アプリサーバ)とDBサーバどっちで扱ったほうがいいと思う?
0344デフォルトの名無しさん
NGNGどっちでもいいのでは?
0345デフォルトの名無しさん
NGNGNTP使うのもめんどくさいからな。
そうだな。どっちでもいいや。
0346デフォルトの名無しさん
NGNGCMP、BMPは話にならないことに気づいたか?
0347デフォルトの名無しさん
NGNGEntityBeanは分散でつかえる技術だとあれほど言ってるのにまだわからんのか
話を混ぜないでください
0348デフォルトの名無しさん
NGNGEntityBeanは、リモートやトランザクション制御できたとしても
うれしくないやろ。
つかえない技術ちゅーことが、一般的な認識になったってことでしょ。
0349デフォルトの名無しさん
NGNGばかやろうばっかだな
「EJBはRDBマッピングの技術じゃない」って何回言えばわかるんだよ馬鹿
EJBはこのスレにはカンケーないんだよバカ
0350デフォルトの名無しさん
NGNGだからEJBを使ってそういうことをやろうとすると云々ってことだろ。
信者ウゼェよ
0351デフォルトの名無しさん
NGNG分散にも対応できるし。
EntityBeanは面倒くさいよ、なんか。
0352デフォルトの名無しさん
NGNGSessionBean+JDO
っつ組み合わせに流れつつあるみたいだなや。
EntitiyBeanは問題外だと思うけど、JDOもそんなにいいかなぁ…。
なんかどのORツールもしっくりこない。
0353デフォルトの名無しさん
NGNG期待しちゃだめなんだろうな、きっと。
60%くらいの自動生成でラクチンして、後は手書きでSQL、
くらいの心構えでやるのがよさげ。
とかいいつつ、俺は一度もマッピングツール使ったことないけどね・・・
0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNGスキーマの変更に強くないと、マッピングって言えないよな
今までのマッピングツールってただ単にSQL文を隠してるだけだと思わない?
そんなことさ、実際普通のプログラマはやってたわけよ
自動生成っていうのはいいけどオブジェクト指向を適用するのはソコじゃないんだよな
それからさ、データベース特有の機能使えないんだったら
プログラマーからどのDB使ってるのか完全にわからなくして欲しい
っていうか、DB側もオブジェクト指向に歩み寄ってきて欲しい←非常に重要
っていうか、DB側もオブジェクト指向に歩み寄ってきて欲しい←非常に重要
っていうか、DB側もオブジェクト指向に歩み寄ってきて欲しい←非常に重要
0356デフォルトの名無しさん
NGNG企業がゴマンとあるからな。信頼性の問題云々だと。
そういう会社に限って、保守に金掛けてなかったりするんだけど。
というのは置いておいて、Oracleがオブジェクト型になれば、きっとみんなそうなるんだろ?
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNGObjectStoreってObjectの丸投げモロ出しできるの?
いいねぇ
でも、そうなると言語間でやり取り大変そうだ
やっぱ究極はXMLが高速になれば・・・・
0359デフォルトの名無しさん
NGNGパフォーマンス的にも問題なく使えるね。
まあ、時代はJDOへと移るんだろうけど…
0360デフォルトの名無しさん
NGNGORDER BYを使ったデータの取得を行おうと思い、以下のコードを試したのですが
Torque.init("Torque.properties");
Criteria c = new Criteria();
c.addAscendingOrderByColumn(MytablePeer.Field1);
List list = MytablePeer.doSelect(c);
doSelect()の時点でNullPointerExceptionが発生してしまいました。
addAscendingOrderByColumnを使わずに実行した場合は問題なく動きますので
Torque.propertiesの設定には間違いはないと思います。
addOrderByColumn()を使った場合でも同様の現象が出ました。
DBはMSSQL2000 Torqueは3.1 OSはWindows2000です。
どなたか同様の現象がでた方いませんか?
http://www.mail-archive.com/[email protected]/msg12713.html
おそらく同じ現象かと
0361デフォルトの名無しさん
NGNGあなた、3月ぐらいにJakartaの掲示板に同じ質問しました?
今ググッて見たらあなたと同じような現象らしいです
その方も、同じメーリングリスト指していました
やっぱ、バグなんですかね?
何か特別な、スキーマでしょうか?
差し支えなければスキーマ定義教えてください
0362361
NGNGソート対象のカラムは[NOT NULL]定義になっていますでしょうか?
0363360
NGNG<table name="Mytable" idMethod="none">
<column name="MemberNo" size="4" type="VARCHAR" />
<column name="GroupCd" size="3" type="VARCHAR" />
<column name="Name" size="24" type="VARCHAR" />
<column name="Y-Cd" size="2" type="VARCHAR" />
<column name="F-Flg" type="BIT" />
<column name="HolD" type="REAL" />
<column name="Mail" size="50" type="VARCHAR" />
</table>
特別なことをしているとは思えないのですが。
jakartaの方は私ではないです。
今月のJavaWorldを読んで、使ってみようかと思って。
0364361
NGNG私の方も>>363のスキーマ定義で
Win2000+MySQL+J2SDK1.4.1.02
で試してみます(MS SQLは持っていないので参考になるかどうかわかりませんが・・・)
Torque最近使ってないので思い出しながらやってみます
0365360
NGNGMySQLで実行した場合は成功しました。
また上記のスキーマ定義で、MemberNoにrequired="true"を追加して
実行しましたが、やはり失敗でした。(エラー個所もいっしょ)
やはりバグですかね・・・
0366361
NGNGやってみました
んん?
なんでかな?MySQLでエラーでたw
addAscendingOrderByColumnのとき出るね
で、おれもEclipseなんだがaddOrderByColumnのときは
「Criteriaにこのメソッド使うべきではない」と警告でます
0367デフォルトの名無しさん
NGNGWin2000+Oracle8.1.7+J2SDK1.4.2
Torqueは3.0.2だけど。
0368360
NGNGそういえばbuild-torqueのjdbcも失敗します。
失敗というかテーブルの情報が取得できないみたいです。
(空のschema.xmlが作られる)
上記のスキーマもDBから作ったんじゃなくて、エディタで作ったやつですし。
この辺が原因かもしれないです・・・
MySQLだと問題ないですよ?4.0.2、Windows2000ですけど。
0369デフォルトの名無しさん
NGNGそういえばって…
0370361
NGNGいったいお前らは何をもってマッピングと言っているのか?
Jakartaの中でも最悪のメンバーでやってるんだろうな
そうか、タービンから独立したわけじゃないんだ
タービンからはじき出されたのですね
0371デフォルトの名無しさん
NGNGとっくにJakartaからもはじきだされてますよ。
Apache DB Project
0372デフォルトの名無しさん
NGNGそれは昇格なのか?
0373デフォルトの名無しさん
NGNGJDOを使うと開発効率や保守性は上がるんだろうか?
...結果として一覧表的なものを求められる場合が多いので、
かえってJDOを使うと大変かと。
0374デフォルトの名無しさん
NGNGまだ、はっきり言って過渡期なのにJDO使うやついないだろ?
「今回は見送りましょう」ってなる
0375デフォルトの名無しさん
NGNGなぜ英語(カタカナ)にするのだ?
0376デフォルトの名無しさん
NGNG>>361
以前、DBAdapterの設定が間違えた時にそういう現象(ORDER BYでおかしくなる)が起きました。
生成したBase<TABLE名>PeerクラスのDATABASE_NAMEにセットされているデータベース名で
Torque.propertiesで設定するtorque.database.<データベース名>.adapterの値を設定してなかったため、
BasePeerクラスのcreateQueryやcreatePreparedStatementメソッド内の
「dbMap.getTable(table)」のコードの部分でDatabaseMapオブジェクトが取得できなくて例外(NullPointerException)がスローされていました。
「ORDER BY」以外で動くのは単に「dbMap.getTable(table)」のようなコードが他の句の生成部分で使用されていないから大丈夫なだけだったようです。
・・・こんな簡単な問題ではない?
0377デフォルトの名無しさん
NGNGんで、仕方なかったのでHibernateに乗り換えました。
日本ではTorqueが雑誌などで特集やってて人気あるけど
アメリカではHibernateの方が人気ありますよね。
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNGそうか、今日ちょっといじってみるから
わからんことあったら教えてね マジで
0381380
NGNGプロパティーファイルとスキーマ定義XML、スキーマのBeanクラスをとりあえず作りました
この先どうすればいいのでしょう?
インストールフォルダのbuild.xmlをANTで起動したらHibernateのフォルダできちゃった。
これってHibernateのためのbuild.xmlファイルみたいですね・・・
Torqueと同じような感じだと思ってやってしまいました
このHibernateってクラス自動生成とかっていうのはないのですかね?
とりあえず、ためしにこのままコード書いてみたのですが
Sessionはどこで取得するのでしょうか?
Sessionが無いとsave()出来ないみたいなので・・
0382380
NGNGSessionの取得方法わかりました
>SessionFactory sessions = cfg.buildSessionFactory();
>Session session=sessions.openSession();
これですね↑
で、いいとこまで行ったのですが
org/dom4j/io/SAXReader
これが含まれたJarファイルはどこで手に入りますか?
なんかコレが無いってエラーでます
0383380
NGNGJakarta行って見たのですが
やっぱないですね・・・
っていうかパッケージ名なんて一意のものだから
Javaのパーケージ検索用のディレクトリサービスあってもいいと思うんだけど・・・
0384380
NGNG単純に
http://dom4j.org/
で、発見したよん
0385デフォルトの名無しさん
NGNGHibernateの配布ファイルの中に入ってない?
lib/dom4j.jarってファイルがあるはずだけど。
Torqueは雑誌のサンプル読んで「これ便利か?」って疑問だったけど、
そんなにいいものなのならこれを機に試してみようかな。
0386380
NGNG「hibernate_unique_key」っていうテーブルが無いって言うエラーでます
やっぱ自動生成しないといけないんじゃないでしょうか?
おしえてください
0387380
NGNGありがとうございます
すんごい、バカでした僕
あれから、自分で気づいたんですが・・・
13MBのdom4jダウンロードしてしまった
なにしてんだか・・・
>>386にも書いたのですが
SQL自動生成ツールは無いのですかね?
「hibernate_unique_key」ってテーブル自分で作ってもいいんですが
どうせ、スキーマ定義わからないのでどうすりゃいいのか・・・
0388380
NGNG0389380
NGNG0390380
NGNGエラーは出なくなってプログラムは正常終了したが
データベースに書き込めてない・・・なんでだろう
0391380
NGNGsession.flush();
コレだけじゃダメなんですか?
0392380
NGNG「hibernate_unique_key」ってテーブルだけどんどん書き込まれて
肝心のオブジェクトの方のテーブルは書き込まれていない・・・なんじゃコレ
0393デフォルトの名無しさん
NGNGこのままだとつまらないので情報提供。
Hibernate2のドキュメントの翻訳をしているところをハケーン。
ttp://www.ozacc.com/library/
まだ4章までだそうな。ありがたく読ませていただきます。
0395380
NGNGコードの書き方は、IDEの保管機能とかいままでのTorqueとかの経験で勘で出来るんですが
肝心の作業手順っていうか作業の流れがわかりません
↑これさえはっきりわかれば何の問題も無いのですが・・・
0396デフォルトの名無しさん
NGNGtransactionをcommitしろよ
Session session = sessaionFactory.openSession();
Transaction tx = session.beginTransaction();
SomeObject object = new SomeObject();
session.save(object);
tx.commit();
session.close();
0397396
NGNGsession.flush();
session.connection().commit();
session.close();
でも、いいぞ。
0398デフォルトの名無しさん
NGNGSchemaExportツールは試したか?
java -cp hibernate_classpaths net.sf.hibernate.tool.hbm2ddl.SchemaExport options mapping_files
0399380
NGNGありがとうございます
でも、ダメでしたエラー内容も変わらず・・
エラー内容::net.sf.hibernate.HibernateException: SQL update or deletion failed (row not found)
これからデータ入れるのに「(row not found)」なんてあたりまえじゃん何だコレは・・・
>>398
ありがとうございます
SchemaExportは自分で気づいてつかってみました
で、setupコマンドは上手くいくんですが
それ以外のコマンドの使い方がわからず・・・
0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNGなんでそんなに手こずるのさ。
SessonFactory sessions = new Configuration()
.addClass(Item.class)
.buildSessionFactory();
Item item = new Item();
item.setName("Item name");
Session session = sessions.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.save(item);
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
0402380
NGNGすいません
いや、ですから
コードの書き方はわかるんですが
開発の手順がわからないのです
スキーマのXML、スキーマのクラス作る
SchemaExportツール叩く→なんかしらんがDB上にテーブル出来上がってる
メインのプログラム作る
動かす
エラー::net.sf.hibernate.HibernateException: SQL update or deletion failed (row not found)
コミットのところでエラーになります
なので、もう一度一からやりたいのですが・・・
そもそも手順がこれでいいのかどうか疑問でして・・・
0403デフォルトの名無しさん
NGNGttp://hibernate.bluemars.net/hib_docs/reference/html/or-mapping.html#or-mapping-s1-4
generatorの指定をidentityもしくはsequenceにするとすんなりいく予感。
0404401
NGNGそれはスマンかった。
俺は手っ取り早く、手動でテーブル作っちゃってるからSchemaExportなぞ
使ったことも無かった。
今試してみたが、以下の手順で問題無くデータを格納できたぞ(PostgreSQL)。
*.hbm.xml作る
*.java作る
$ java net.sf.hibernate.tool.hbm2ddl.SchemaExport classes/*.hbm.xml
$ java net.2ch.Test
以下のようなシンプルなテーブルでもエラー出ちゃう?
ひょっとしてマッピング内容に起因する問題だったりして。
CREATE TABLE Person (
person_id SERIAL PRIMARY KEY,
name TEXT NOT NULL
);
0405デフォルトの名無しさん
NGNGここらへんにでてくるMapping-Frameworkは
使えないと思っていいんでしょうか?
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG一個ずつ丁寧にマッピングを書いてやれば使えないこともない。
0408山崎 渉
NGNG0409デフォルトの名無しさん
NGNGなぜに日本語のからむ?
0410405
NGNG英語だとわかりにくいとおっしゃるので…
まあ二つ返事でOKしてしまった俺も俺だが・・・
0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNG英語のビュー作ってしのいどけ。
しかし、DBの管理人で分かりずらいから日本語にしてって、
すんげー低レベルな連中と仕事してるな。
そんなんで食っていけてうらやますい。
0413405
NGNGDBっていってもアクセスだし…
管理人っていっても本職は事務だし・・・
0414デフォルトの名無しさん
NGNGMySQLかなんかで作り直してあげた方がいいんじゃないか?
0415401
NGNGMySQLで動いているシステムのデータをAccess(ODBC)経由で
閲覧してる、ってコトじゃないの?
0416_
NGNG0417デフォルトの名無しさん
NGNGもし、見ていたら確認してください
Web+DB PRESS(技術評論社)って言う雑誌のvol.15に
それの原因らしきものが書いてあります
P164参照してください
本屋行けばまだあるかも、もしくは技評のHPから
バックナンバー注文して
0418デフォルトの名無しさん
NGNG信じられんかもしれんがちょっとしたデータの管理にRDBMS使うと
いきなり高くなって予算取れないからってAccessそのもので管理する
ケースがあるんだよ。
まあ、部署内で閉じてて誰かがファイル開いてたりってのがすぐわかる環境だったら
正しい選択だとは思うんだが。
0419デフォルトの名無しさん
NGNGおい、取引先の担当さんよ!
PostgreSQLはそんなにダメですか?
MySQLはそんなにダメですか?
あんたの推してるOracleってそんなにいいんですか?
あなたの案件見ている限りじゃお金の無駄遣いですよ
そもそも、Oracle使えるんですか?
Oracle言ってみたいだけじゃないですか?
0420デフォルトの名無しさん
NGNG安い、普通、ちょっと高め、高いの 4 つから選ぶとき、
値段しか判断基準がないとすればちょっと高いを選ぶのが人間心理。
0421デフォルトの名無しさん
NGNGなるほど。並・上・特上があったら上が一番売れる罠。>うなぎ・すし
0422デフォルトの名無しさん
NGNGPostgreSQLもSQAがあるんじゃない?
となると、知ってる名前じゃなきゃだめってことかなぁ?
0423
NGNG莫大な投資と宣伝してるわけで…。
0424デフォルトの名無しさん
NGNGSQAじゃねえや、SRAのまちがいね。すんません。
0425デフォルトの名無しさん
NGNGやっぱ、あの暴力的なOracleの値段にくらくらきてしまうんですねぇ。
0427デフォルトの名無しさん
NGNG金出せば安心なのか?
責任の所在料とかいうが、被害が出たときはOracleが出してくれる(た)のか?
不明な障害の時親身になって解決のサポートをしてくれる(た)のか?
サポート料とかいってパッチ料金だけなのじゃないのか?
まぁ、大体、みんな自分の財布から金がでていかないから
金を使いたがるんだよな。
予算の内、余った額はみんなに還元するプロジェクトでも
Oracle使うか?
0428デフォルトの名無しさん
NGNGDBはストレージとして、ビジネスロジックは全部
アプリ側に埋め込むという開発が目的だから、
そういう使い方するだけだったらOracleはいらないな。
DBオブジェクトもテーブルと、インデックスぐらい
しか使ってないんだよね。さらに参照整合も使ってなかったり。
とスレのちょっとスレの内容の方向に戻してみる。
0429デフォルトの名無しさん
NGNGレイヤーの切り分けって重要だし、ストアドでやった方が簡単で速けりゃそっちを使う。
開発者の切り分けもしやすいし、DBでやるべき事をアプリでする必要ないじゃん。
こういう用途のフレームワークってないんだよね。だから自作するしかない。
0430デフォルトの名無しさん
NGNGここのスレで、こういう意見を出す人もいるんだ。
オレもそうだよ、同意見だよ(ちょっと皮肉を込めていっただけ。)
DBはデータだけではなく、ビジネスロジックも一元化させ共有化
させる機能をもっている。
だから、トリガー、ビュー、ストアド、チェック制約、参照整合、
ユーザメッセージ(例外)等、DBの持つオブジェクト、機能を駆使して、
まず開発では、ビジネスロジック
・これを更新したら、あそこのデータを更新する、
・ここは指定値以下の数値しか入らないようにする、
・DBエラーもそれに関して全て作り、どのエラーかもメッセージとして(APに)返す
等をDBで定義し、APはできるだけ、
(擬似的にでも)1テーブル(ファイル)のI/Oの感覚で開発ができる作りが美しいと思う。
AP側の開発者も本来の業務(UIや、APレベルでのプログラムの最適化、高速化)
に集中できる。
他のDBMSの移行時に大変だ、という意見が出るが、それは大変でアタリマエ。
オレらはアプリケーションシステムを作っているのではなく
データベースシステムを作っているのだから。
開発されたDBを変えることの意義を分かっていなく、
DBMSの変更を簡単に考えるのはちょっと賛同しかねる。
0431デフォルトの名無しさん
NGNG>開発者の切り分けもしやすいし、DBでやるべき事をアプリでする必要ないじゃん。
俺はまさしくその考えなので、業務ロジックは結構ストアド(PL/SQL)で
組んでいる。社内の基幹業務のDB製品を変えるなんてことは想定もしてない
せいもあるけどね。
最近のOO設計を前提、イコールDBはタダの箱、というJava雑誌等の論調には
正直戸惑っているなりよ…
0432デフォルトの名無しさん
NGNGひとつの社内システムや基幹システムに長期間携わるのならそれもありかも。
でも普通にSIやってるといろいろなDBMSを短期間で扱わなきゃならないから
どんなDBでも同じように扱える方法をどうしても選んでしまうのも事実。
そこまでひとつのDBMSの機能を使い切るまでに至っていないのも現状。
0433デフォルトの名無しさん
NGNGビジネスロジックサーバ側でできることはなるべくしておくっ
てのは、アリじゃないのかね。規模が大きいシステム限定の話
ですが。
DBMSの差し替えが絶対に発生しないようなら、全部DB任せは
楽でいいけど。
0434デフォルトの名無しさん
NGNG以下省略 Web鯖等 ビジネスロジック鯖 DB鯖
Web鯖等 ビジネスロジック鯖
Web鯖等 ビジネスロジック鯖
Web鯖等
Web鯖等
Web鯖等
こんなシステム、ありがちでしょ?
0435433=434=DB素人 JavaPG
NGNGそれ以外の機能を分散配置できるような賢い鯖ってあるのですか?
0436デフォルトの名無しさん
NGNGビジネスロジックにデータ処理を持ってきたら持ってきたで
ネットワークへの負荷が上がるのが問題になると思うんだけど・・・
あと、DBMSの差し替えを気にしてるようだけど、DBMSの差し替えよりは
Viewやストアドを別PGで使いまわす方が発生頻度が高くない?
そういう事を考えるとDBMSの機能はフルに利用すべきだと思うよ。
※ORMを手軽に利用する気なら、Viewでゴリゴリは必須のような…
そもそも、規模が大きいシステムでDB鯖が貧弱な構成ってあんのかな?
ここ最近だったら、どこの大手もストレージ周りで稼ごうとするでしょ。
まあ、中小規模の開発だと結構ヤバイ構成を見かけるけどね。
0437436
NGNGいや、もうバリバリDBMSの機能は使いまくるべきだと思うよ。
Torque良く使うけど、更新系をORMに任せて参照系はViewで外部
切り出しのパターンで済ませてる。
それだと、チューニング時にDB管理者へそこら辺のメンテ振れるし・・・
正直結合する条件が一部変わったくらいで、Javaコンパイル→APPサーバー
再起動の流れはやってられん。
0438_
NGNG0439デフォルトの名無しさん
NGNG結局時代は、元に戻るのか?
0440デフォルトの名無しさん
NGNGDBのオブジェクト化がさらに進んでいけば、ガラっと変わる可能性は
あるけど今は過渡期だね。
0441デフォルトの名無しさん
NGNG(または、java との明確な切り分けが)できれば良いが、
ロジックがjavaとストアドプロシージャに分散すると、保守が大変。
そのうえトリガなんか絡んでくると、追いきれません。
保守できるドキュメント書いてね〜
テンアートニのセルベッサでは、
ビジネスロジックをPL/SQLで実装していたような・・・
0442デフォルトの名無しさん
NGNG「まずスキーマ定義ありき」なスタイルが根強くあるせいではないですか
Torqueとかのドキュメント見ると(良いか悪いかは知らんけど)アプローチが逆なようだ
0443429
NGNG>>432
うちはWebベースな業務系システム作ること多いんだが、
今のところOracle以外は使ったことがない。
オラクルマスターのゴールド以上がそこらじゅうにいるような
会社だから、他のDBで提案する事がありえないのもあるけど。
そうじゃなくても、業務で使う可能性が高いDBって、
Oracle、DB2、MSSQL、Sybaseくらいなもんでしょ?
運用中にDB移行なんて((((;゚Д゚)))ガクガクブルブル
>>441
トリガー仕掛けすぎは追うの大変だね。前に何でもかんでも
DB側でやりすぎて大変な思いしたことあるからよくわかる。
Javaのパッケージを機能単位で切り分けて、そこにリソースとして
ストプロやビューのSQLも突っ込んでる。びみょーにjarのサイズは
デカくなるが、運用する時にすぐ見つかって便利だよ。
若干スレ違いなのでsage。
0444デフォルトの名無しさん
NGNG> Oracle、DB2、MSSQL、Sybaseくらいなもんでしょ?
うちはPostgreSQLが多い。
あとはMySQL、Oracle、DB2、MS SQLServerがほぼ同率かな。
Oracleは高いからあまり使わない。
0445デフォルトの名無しさん
NGNGビジネスロジックをRDBMSで処理したがるのはオールドタイプ。
なんでもかんでもJavaで処理したがるのはニュータイプ。
ってことでいいか?
http://www.namazu.org/~satoru/misc/ggap.html
0446デフォルトの名無しさん
NGNGなんでもかんでもJavaで処理したがるのは単なる厨房
0447デフォルトの名無しさん
NGNGEJBのセッション/トランザクションをなぜみんなそんなに有難がりますか?
0448デフォルトの名無しさん
NGNG言いたいことはわかるんだけど
DBのトランザクションはあくまでDBだけであって
EJBのトランザクションはもっと広範囲
それらを切り分けたりするために
「Required」「Supports」等の属性ある
単純に「行って来い」的な処理ではEJBのトランザクションのありがたみはわからないし、
そこまで細かい案件にめぐり合ったこと無いと思う
0449デフォルトの名無しさん
NGNG慣れてきたせいかな。
CMRをちゃんとつかいこなして、モデルを構築し、
Session Facadeな設計にしてビジネスロジックを公開するのが、一番スマートだよ。
0450デフォルトの名無しさん
NGNGBLOBの取得を必要なときまで遅らせることができるとうれしいです。
今、Hibernateを使っているんですが、普通にsession.find()で取得するとBLOBまで
引っ張ってきてしまうため、わざわざカラムを指定しています。
0451デフォルトの名無しさん
NGNG遅らせるって言うのは
タイミングを指定するってことでイイのかな?
こういう機能欲しいけど無いと思う
JBossとかのEJBコンテナにこういう機能ついてるけど・・・
0452デフォルトの名無しさん
NGNG適当に自作ジョブキューに突っ込んどいて、必要になったら一斉実行とか、
一般的な遅延評価ロジックとか、そんなのを作るのは簡単だと思うんだけど。
そういう話じゃなくて?
0453デフォルトの名無しさん
NGNG時と場合によって好きな場所に配置できるって、よくない?
0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNGやっぱりOracleだけなのね…
0459デフォルトの名無しさん
NGNGVIEW なんかを使ってDB側も歩み寄れということでよろしいか?
0460デフォルトの名無しさん
NGNGよろしい。
まあ、マスタメンテみたいな簡単な操作なら、Torque はお手軽だ。
0461デフォルトの名無しさん
NGNGjava でSQLを生成するよりも、
Torqueを覚えて、設定して、view 作って、コーディングして、
のほうが効率がいいと言うの?
Torque からのDBアクセスのオーバーヘッドを無視できるぐらい、
コーディングが簡単なの?コードのメンテナンス性が向上するの?
アプリケーションを変えずに、RDBMS の製品の変更や、
OODB に変更する事ってほんとにあるの?Torque だと可能なの?
Torqueに限らず、ORマッピングの利点がぜんぜん解りません。
それは、俺がコボラーだからか?
0462デフォルトの名無しさん
NGNG実行効率をよくするためのものじゃない
DBをいかにオブジェクト的に扱うか
0463デフォルトの名無しさん
NGNGコボラなりに解ってるつもり。
実行効率はむしろ悪くなるでしょ
で、オブジェクト的に扱った先には何があるの?
SQLのチューニングは不要なの?コーディングは楽なの?
メンテナンスは?テーブルの変更は?
ってことを聞きたかった。
それよりも、SQLとビジネスロジックを切り分ける設計をしたほうが
シンプルで良いのではないか?
0464デフォルトの名無しさん
NGNG>SQLのチューニングは不要なの?コーディングは楽なの?
>メンテナンスは?
マッピングフレームワーク使ったときに
SQLのチューニングは出来ない
DB固有の操作はあまり得意ではない
コーディングに関してだが、これはDBマッピングというよりも
いわゆるフレームワーク全体に言えることだが
ある決まった枠の中で作業するというのは人によって窮屈でもあり
勉強しないといけないことも、多い
ただ、それは最初だけだということ。
逆に、保守の面ではフレームワークが有利だよ
>テーブルの変更は?
これは、はっきり言ってどちらの方法でも
修正個所はある。
>それよりも、SQLとビジネスロジックを切り分ける設計をしたほうが
>シンプルで良いのではないか?
そんな設計的なこと、Java開発者なら誰でも考えているし、
Torque以前からアプローチは変わっていない
じゃあなぜ今Torqueや他のそういうマッピングツール使うのか・・・
アプリケーションの設計に時間かけて、あれこれテストなどやってるぐらいなら、
あらかじめ存在するフレームワーク使った方がイイに決まってるから
ただそれだけだよ。
0465デフォルトの名無しさん
NGNG>>464に補足するのであれば、開発人数が増えていった時に、プレゼンテーション層、
Web層、EJB層、EIS層での開発分離に役立つよ。
あと、少なくとも保守とコーディングは楽になる。
フレームワークを利用してるから開発者が変わっても対応してもらいやすいし。
SQLのメンテナンスなんて、基本的にViewの中身を差し替えればOKじゃない?
>SQLとビジネスロジックを切り分ける設計
TorqueでViewを使えばそうなるんでないかい。
そもそも設計に疑問があるなら、J2EEのデザインパターンに目を通してみればどうかな。
DAO系のパターンは、有名なフレームワークだったらほとんど利用されてると思うよ。
0466デフォルトの名無しさん
NGNGなんでもありよりも、縛りがあるほうが保守はラクになる。
設計書書くにしても処理を逐次記述していた部分が、
フレームワークの仕様書参照で済んだりする。
ドキュメントが減れば、そのぶんその後が引継ぎやすくなる。
0467デフォルトの名無しさん
NGNG別に使わなくてもできるし。
まあ、自分は毎回同じようなDAO書くのが嫌なんでTorque使うけど。
0468デフォルトの名無しさん
NGNG>>464
>保守の面ではフレームワークが有利だよ
しかし、今のフレームワークはどれも寿命が短すぎるよ
時代が下って、引き継げる開発者が果たしているかどうか。
0469デフォルトの名無しさん
NGNGつーことは、
フレームワークを使用するなら、
フレームワークはどんなDBMSにも対応できる
=DBをストレージとして使用する
のがほとんどだから
特にわざわざ高い金出してOracleでなくても
いい、ということでいいかな?
管理面(バックアップ、リカバリ、物理ファイルの増減etc...)
においても、有名どころの他のDBMSも同じようにできるしね。
0470デフォルトの名無しさん
NGNGServletとしての基本機能は同じなのに tomcat じゃなくて、weblogic を使うのと同じで。
0471デフォルトの名無しさん
NGNGなんで日本でこんなに流行っているのかがわからん
0472デフォルトの名無しさん
NGNG>>427の意見はどう?
0473デフォルトの名無しさん
NGNGその教育コストを回収しようという発想になって、
Oracle 以外はダメよっていうだろうな。
0474デフォルトの名無しさん
NGNG> 正直、Torqueだけはやめとけって
その理由は?
0475デフォルトの名無しさん
NGNGまあ、しょうがないんじゃないんですか。
なんだかんだいって、実績 >>>>>>> 性能、価格 だし。
まあ、 Oracle は性能はいいんだけど、なにせ価格が・・・。
0476デフォルトの名無しさん
NGNG透過的でないから。
0477デフォルトの名無しさん
NGNGじゃ他に何にするの?
HibernateかJDO(CasterJDOとか)絡みかな。
少なくとも日本では認知され初めてるんだから、自分が気に入らない
アーキテクチャーだからって文句付けるのはやめようよ・・・
そういえば、Strutsも最初のうちは叩かれてたね。
0478デフォルトの名無しさん
NGNGええ・・・そんなレベルの批判?
0479デフォルトの名無しさん
NGNG何が?
ぜんぜん分かりません。
あなたはすばらしい知見をお持ちなのでしょう?
もっと詳しく教えてください。それがみんなのためです。
0480デフォルトの名無しさん
NGNGオレ様は、世界中の誰よりもオッパイが大好きだ。Dカップぐらいがいい。
0481デフォルトの名無しさん
NGNGDカップ好きは だいぶお利口
Fカップ好きより いくらかCOOL!
そこまで現実わかっているなら
もうひと頑張りでーす
0482デフォルトの名無しさん
NGNG勝つためなら手段は選ぶな。
・将来DBのチューニングなど、アセンブラでロジックをチューンするような
無意味なものになっていくことを見越しての、先物買い。EJB鯖が自動最
適化してくれる…日がくるのかねえ?
後者と前者の主張が混乱してるのかもな。
0483デフォルトの名無しさん
NGNG>>477
Torqueはアーキテクチャーが気に入らないって言うよりも出来が悪い。それだけ。
あと最近はそうでもないみたいだけど、ドキュメントも不親切じゃない?
フレームワーク云々、再利用云々、技術者の引き継ぎ云々議論するのもいいけど
ドキュメントや資料が貧弱じゃフレームワークとしては致命的のような気が。
それから、Sun JDOとCastorJDOはまったくの別物なのでヨロシク
0484デフォルトの名無しさん
NGNG>Torqueはアーキテクチャーが気に入らないって言うよりも出来が悪い。それだけ。
おいこら、なんで出来が悪いのか聞いてんだろ?
おまえ、小出しにしておちょくってんのかコラ?
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNGちょっとなつかしいな。
0487デフォルトの名無しさん
NGNG考え方が逆だと思うのだが。
DBありき、SQLありきではない。
0488デフォルトの名無しさん
NGNG俺>>477なんだけど、JavaWorldで特集が組まれ始めるくらいだから
ドキュメントや資料云々の充実はこれからだと思うよ。
まだ単なる過渡期でしょ。
あと、出来が悪いってのは具体的に何?
今仕事で使ってる限り、それほど問題出てないんだけど。
なんか批判する人の多くが、単に使い方を誤ってる気がする今日この頃…
>それから、Sun JDOとCastorJDOはまったくの別物なのでヨロシク
なんでSunJDOが出てくるのかわからん、JDOの話はしてないべ。
HibernateとCasterJDOを例に出したのは俺が単に使ったことあるから。
0489488
NGNGあ、ここで言ってる?もし理解が不足してたんなら謝るよ。
本題はTorqueの話ね。
0490デフォルトの名無しさん
NGNGあんまり良いものつかってないせいかもしれんが。
0491デフォルトの名無しさん
NGNGTorque使ってるヤシは負け犬かチョソ
0492デフォルトの名無しさん
NGNGmonazilla Part 4
http://pc2.2ch.net/test/read.cgi/tech/1042432238/846
皆考えることは一緒って事でしょうかね。
0493デフォルトの名無しさん
NGNG両方を使いこなせてないなら、お前も負け犬では?
0494483
NGNGTorqueがまだ過渡期だってのには同意するけど、Hibernateだったら
既に充分すぎるほどのドキュメントが揃ってるわけで。
Torqueは、必要最低限の利用法をカバーしたTutorialと
(シンプルすぎる)User's Guideくらいしかないでしょ?
Undocumentedな部分が多すぎて、挙動を確認するために
逐一ソースを追っていくのがダルいです。
0495483
NGNGただ、去年検証してダメ出ししたっきりなんで、間違ってる点や
既に解決している部分もあると思う。それらについては指摘しておくれ。
OUTER JOINがサポートされていない。
JTAに対応してないみたい。
オブジェクトを更新した際、明示的にsave()メソッドを呼ぶか
PeerクラスのdoUpdate()メソッドを呼ぶ必要がある。
→透過的じゃないやん
あらかじめ設定したJDBCコネクションしか使わせられない。
自動生成されるクラスが多すぎる。
クラスFooに対して、FooPeer、BaseFoo、BaseFooPeerって…。
クラスを自動生成する都合上、BaseFooが出来るのまではわかるが。
オブジェクトを1つだけ取得したい場合でもBasePeer.doSelect()に
Criteriaを渡して、結果をリストで取得しなければならない。
これじゃダサすぎ。
List result = FooPeer.doSelect(criteria);
Foo foo = (Foo)result.get(0);
(続く)
0496483
NGNGEclipse用プラグインが無い。
XDocletがTorqueだけサポートしていない(HibernateとCastorは
サポート済)。いちいちマッピングを手書きするのは面倒です。
足周りのVillageがさっぱりメンテされていない。
なんとなく不安。
プロジェクトに組み込む際に必要な下準備が多すぎる。
Hibernateだったら、データクラス毎に*.hbm.xmlを用意して
hibernate.propertiesをクラスパスに置けばOK。
まあ、上記の3つはどうでもいいような気もするが。
0497デフォルトの名無しさん
NGNGパフォーマンスはどうよ?
いくら過渡期とはいえ、これからパフォーマンスが大幅に
改善されることはないと思うのだが...
0498デフォルトの名無しさん
NGNGJakartaもまだ完璧JDOじゃないし・・・
トライアクティブとか言うやつ試したけど
っていうかパフォーマンスの意味わかんない
0499デフォルトの名無しさん
NGNGいや、だからTorqueの作りがダサいってのは別に否定してないわけで・・・
そもそも、アナタが文句をつけているのはアーキテクチャーの話じゃないの?
「出来が悪い」って、「バグバグで使えない+最低限必要な機能が存在しない」って
意味かと思ってたよ…
OUTER JOINはそもそもView使っとけば良い話だし、JTAに関しては対応せずとも
通常のConnectionを利用したTransaction管理が行えるから、最低限の機能は満たしてる
んじゃないかな。
他はそれこそTorqueのアーキテクチャーに文句をつけてるだけでしょ。
俺もHibernateは好きなんだけど、ほんとに日本でドキュメント充実してると思ってる?
ためしにgoogle[日本語]でHibernate javaとTorque javaの検索件数を比較してみてごらん。
どっちも少ないけど、Hibernateの使い方なんて特に少ないでしょ。
※俺の現場では英語を読もうとしない技術者の人が多いから、とてもじゃないけど
Hibernateは導入できん。(TorqueはWeb+DBの記事とWebを見せてやらせてる)
0500483
NGNG例えば、単一のオブジェクトを取得する手段が提供されていないってのは
アーキテクチャレベルの話じゃなくて、作りがダサいってことにならないかな。
それから、俺は日本語のドキュメント云々なんて話はしてないです。
そもそもTorque使おうってのに英語のドキュメント読まないで仕事になる?
だから>>494でも「Hibernateの英語ドキュメント」と「Torqueの英語
ドキュメント」について*のみ*比較してたんだけどなあ。
Torqueマンセーなのは日本の雑誌記事ばっかりで、日本のサイトをぐぐった
限りではTorqueを褒めてるサイトがひとつも見つからないってのが
そのままTorqueの現状を表してるでしょう。
0501デフォルトの名無しさん
NGNGいや、まあ最初から英語ドキュメントで比較してるのは分かってた
んだけどね…
でも日本での普及って点を考えると日本語ドキュメントで比較するのが
普通でしょ。だから好みがどうあれ日本ではTorqueの方が主流になる
可能性は高いよ。
>そもそもTorque使おうってのに英語のドキュメント読まないで仕事になる?
システムの基本実装する人(アーキテクト)だったら仕事にならない。
でも、個々の限定されたプログラムレベルであれば、Torqueの日本語ドキュメント
程度のものがあれば、十分仕事をすることが可能だと思うよ。
最近の現場は派遣社員の質も含めて相当低くなってるよ。
英語のサイトを見ようともしない人もざらにいる。
だから日本語ドキュメントの充実は技術を導入する上で必須だと思う。
※アナタが少数精鋭の会社にいるんだったらごめんなさいね
結構俺は短期派遣の若い人と組まされるのが多いので…
0502501
NGNG>>500さんに誤解の無いように言っておくと、Hibernateは好きです。
ただ現時点で通常のプロジェクトで使わせてもらえるかは別の話って事で・・・
※2,3人の規模だったら是非使ってみたいと思ってます。
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNG俺ライブラリだというのもあったが、かなり楽ができる機能だ。
動的に検索条件を構築するならあのくらい簡潔なほうがいいな。
作るのにかかる労力に比べて、「あると便利度」がかなり高い。
0505デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNG日本語ドキュメントが無いのを理由に採用を躊躇してしまう事を、怠慢と取るか
不幸と取るかで変わってくるだろうけど、少なくともTorque陣営は、
ドキュメントの日本語化によって、日本での利用者拡大に成功していると思う。
我々は、英語の文章を読むことが仕事じゃないんだし、むしろ、それに時間を
とられて技術的なことをする時間を削らなければならないのは不幸だと思う。
使う人がいちいち翻訳するのが当たり前だから、英語のドキュメントが充実して
いればそれで良しという考え方は違う。
0508デフォルトの名無しさん
NGNGjavaが読めれば問題ない。
0509デフォルトの名無しさん
NGNGうまいことORMでいい感じになったやしはいないわけですか
0510デフォルトの名無しさん
NGNGVIEW との併用でうまくいくでしょ。
0511デフォルトの名無しさん
NGNG→あとはORマッピングツール任せ。どうせどのツールでも大して変わらん。
が一番すっきり?
0512デフォルトの名無しさん
NGNGこの言葉のおかげで話の内容が見えないので誰か教えてください
どうもMVCのViewのイメージがこびりついちゃって・・・
DBのViewってどの部分なんですか?
0513デフォルトの名無しさん
NGNGぐぐれ!まずはそれからだ。
MVCの View ではない。
0514デフォルトの名無しさん
NGNGいや、MVCのビューにかなり近い存在だと思うが。
RDBにおいて、Mが実テーブル、Vがビューでしょ。Cはなんだろ?DMLのSQLかな。
GUIでしかMVCといわないと思ってる人は屁タレケテーイですよ。
0515デフォルトの名無しさん
NGNGそれは観測者が異なるという意味で、違うでしょ?
>>512 はアプリケーション側からの視点で言ってるんだから。
文脈を無視して、屁タレケテーイというのはどうかと。
RDBMSを観測対象の中心にすえれば君の言ってることは正しいと思うよ。
>>512 へは、モデル側から見れば、DBも永続化できるVIEWといえるとか
言っちゃうと混同してしまうかな?
まあ、あれだ。何事も多様性があるってことだ。
0516514
NGNG0517デフォルトの名無しさん
NGNGいや、いいんだ。
それよりも、>>512 が VIEW も知らんのに仕事になるのかと問いたい。
業務系ではないのかな?
0518デフォルトの名無しさん
NGNGViewはViewだ。もっとわかりやすくいうなら外部スキーマだ。わかったか。
0519デフォルトの名無しさん
NGNGぜんぜん違う。知ったかスンナ。氏ね。
0520デフォルトの名無しさん
NGNG何がJavaさえ読めればいいだよ。
0521デフォルトの名無しさん
NGNGhttp://homepage3.nifty.com/coco-nut/
0522デフォルトの名無しさん
NGNGそうなんだけど、英語読まない奴そこら中にいるよね。
俺の隣の席のやつとかw
0523512
NGNGおまいらが、あまりにも叩くもんだから
「なによViewって!」
と手元にあるポストグレスキューエルの
本かなんか見ながらView探してたよ
おいおい、かなり重要な機能ではないか
0524483
NGNG了解です。
俺も、雑誌記事の影響でTorqueが「機能的」にもベストだと
思わされている人たちに「HibernateやCastorもあるよ」と言いたかった
だけなんで、これにて終了ということで。
0525デフォルトの名無しさん
NGNG>JTAに関しては対応せずとも通常のConnectionを利用したTransaction管理が
>行えるから、最低限の機能は満たしてるんじゃないかな。
ほんと最低限だな。J2EEの中心部分使えないのダサすぎw
今更接続プーリングなし、自前トランザクション管理ですか?
EntityBeanが腐ってるから使いたいフレームワークなのに、
SessionBeanの最大の利点を使えないなんてな。
こんな使い方してWebLogicなんか使ってるプロジェクト
いっぱいあるんだろなぁ( ´ー`)フゥー...
0526デフォルトの名無しさん
NGNGは?JTAに関してはSessionBean内でTorqueを使えばいいだけじゃん。
接続プーリングはTorque単体でもサポートしてるし、知ってる?
そして何故WebLogicが突然出てくるのかわからん。
( ´ー`)フゥー...イタスギ
0527デフォルトの名無しさん
NGNGこれも JDO API をサポートしているようですが。
JDO がよさげで、その実装例のひとつである hibernate がよさそうってのもわかりました。
Apache OJB も JDO の実装例のひとつだと思いますが、こいつはいかがでしょう?
0528デフォルトの名無しさん
NGNGhibernateはjdo実装じゃないですよ。
Jakarta OJBもjdoってことだとまだまだらすぃ
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGいまいち私がよく理解していないのですが、JDO っていうのは規格(仕組み? 枠組み?ここらへんはアバウトですが)
の名前ではないのですか?
たとえばServlet というのは規格の名前であり、その実装例として Tomcat や WebLogic、Resin がある
と思っています。
JDOも規格の名前で、その実装例としてCasterJDO、Hibernate、OJB があると思っていたのですが...
あ、でも http://db.apache.org/ojb/ をよくみたら、
・A JDO compliant API
・full JDO implementation is scheduled for OJB 2.0.
ということで、JDOのフル実装はOJB 2.0 から、とありますね。
だから
> akarta OJBもjdoってことだとまだまだらすぃ
なのか。
0531デフォルトの名無しさん
NGNG規格というより仕様の気がする。
あと、HibernateはJDOとは別物じゃない?
0532デフォルトの名無しさん
NGNGTorque => Criteria
CastorJDO => OQL(ODMG 3.0のサブセット)
Hibernate => 独自SQL、Criteria
Apache OJB => Criteria、QOL(ODMG 3.0)、Sun JDO 1.0(不完全)
KodoJDOなど => Sun JDO
ついでに、Apache OJBは下の方でTorqueを使ってたような気がします。
0533529
NGNG> 規格というより仕様
あ、そういうこともできますね。というかそういう表現のほうが正しいかも。
Servlet API をみると、ほとんどが java の Interface ですが、
各ベンダはこの Interface をimplements すれば、Interface で宣言されている仕様を実装していることが
保証されているので、仕様にのっとっている、ということもできるでしょう(あくまでもコンパイルレベルですが)。
オブジェクト指向の、正しい「機能と実装」の考え方だな。
JDBC もそうですが、OracleのJDBCドライバのように、サポートに問い合わせてみると「その機能は未実装です」
とか返事が返ってくるのはむかつく。
ちなみに Sun JDO って http://java.sun.com/products/jdo/ のことだよね?
こいつの実装例として、>>532 の Kodo JDO っていうことなのかな?
Hibernate はこれからみてみます。
あと >>530 も私です。
0534デフォルトの名無しさん
NGNGJDOってのはSunの仕様の名称であると同時に、オブジェクトとデータベースの
マッピング手法の代名詞的な扱いもされているので、仕様であるJDOを指す時は
Sun JDOとかSun's JDOみたいな表記をすることが多いです。
特にCastorJDOなんかは、CastorXMLという兄弟がいるので便宜上JDOを
付けて呼ぶことが多いです。
こう書くとわかりやすいか?
JDOは「RDBMS」
Sun JDOは「SQL92」
CastorJDOは「RDBMSっぽいけど仕様は別なもの」
商用のJDOエンジンは「SQL92フルサポートなRDBMS」
0535デフォルトの名無しさん
NGNGぜんぜん
0536529
NGNGうーん、なんとなくわかってきたような... どうもありがとう。
ちなみに Servlet(の仕様)というと、Sun の Servlet という使用があるわけだが
(Servlet サポートという場合、Servlet API を実装していなければならないですよね?)、
JDO の仕様は Sun の JDO 以外にもあるの?
0537デフォルトの名無しさん
NGNGべつに、細かい話なんてどうでもいい
はっきりいって話題が違う
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNGHibernateのSessionを開いて、閉じて、例外処理を行うあたり、
JDBCをコーディングしているのとそんなに変わらないような
気がします。
この点についてはどう思いますか? Hibernateのサイトでは
フィルターを使って開け閉めを行えばいいみたいなことが
書いてありますが、あまりスマートじゃないような。
0540デフォルトの名無しさん
NGNG>>1-1000
0541デフォルトの名無しさん
NGNG>>1-10
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNGJavaに限定されず、それなりに需要はあると思うんだけど…
Javaでの実装時はHibernateの方がシンプルで良さそうだね。
0544デフォルトの名無しさん
NGNGラップすればいいだけでは?
それだと、Torqueだろうが、Hibernateだろうが、JDBCゴリゴリだろうが、
CSVファイルだろうが、カンケーない。
むしろ、設定ファイルの管理やOuterJoinできませんなんて馬鹿な制限がない分、
JDBCゴリゴリをラップしたほうがシンプル。
ま、俺様フレームワークになることは、確実だと思うが。
0545(゜Jし゜)
NGNGADO.Netではこの辺はどんな感じなのでしょうか?
DataSetを持ってきてCommandBuilderにSQL自動生成させて、
ってのは標準でORマッピングっぽいことが出来るような
気がするんですが
0546デフォルトの名無しさん
NGNGその場合プログラマはDataSetという非ドメインオブジェクトを意識することになるので、
ORマッピングとは言わないと思われ。
java.sql.Statement#executeQuery()の戻り値が、HashMapを持ったArrayListになって、
データの更新をラップするメソッドが提供されるようなものかな。
(API的には間違っているけど、概念的にはあってると思う。)
0547デフォルトの名無しさん
NGNGOuterJoinをSQLでやらずにViewでヤットケというのが、今の潮流のようですが…
0548デフォルトの名無しさん
NGNGそんなばかな。
今のO/Rマッピングのフレームワークがいけてないだけ。
0549デフォルトの名無しさん
NGNGhttp://biz.yahoo.com/prnews/030812/latu050a_1.html
0550山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
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でいい気がしてきた。
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という選択肢も当然アリかと。
0753デフォルトの名無しさん
NGNG大規模案件には当然EJBっていう選択もありですな。
でも、中小規模案件にEJB(J2EE)適用すると、逆に工数増えるケースが多い罠
0754デフォルトの名無しさん
NGNG英語が不自由な漏れはダメポ。
例えばこんなん。(2ちゃんねるブラウザの比較表)
ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/7562/
0755デフォルトの名無しさん
NGNG藻前さんの欲しいネタは、コレかい?
http://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison
0756デフォルトの名無しさん
NGNGおわ!ありがトン。
。。。なんか表がずれてる。漏れだけ?
0757デフォルトの名無しさん
NGNG表がズレるやつぁ〜漏れんとこに来い!
漏れもズレてるから心配するな♪
0758デフォルトの名無しさん
NGNG自動でスキーマ抜いたソースと、マッピングファイル作ってくれるよ(感涙)
ついでに、Hibernate開発チームのSteve氏が、サンプルソース大盛りで
DAO実装周りの解説してくれてるページもあった。
ttp://forum.hibernate.org/viewtopic.php?t=925108
もうこれは人として号泣するしかない。
0759デフォルトの名無しさん
NGNGSessionFactoryを最後にclose()してやると、完全に切れるみたいだけど。
これをやっていいのかどうか、確信が持てない。
0760デフォルトの名無しさん
NGNGTyrexは1.0.1が出てるよ。元の開発元は放置してるらしく別のとこがやってるみたい。
1.0の時は悲惨なバグがちらほらあったなぁ。endResource()あたりのリスト繋ぎ換えで
循環リスト作って無限ループとかw今は完全に捨てたんで状況は追ってない。
JOTMはもっと酷かった。コネクションプールの実装が腐ってて、切れても永遠に
持ちっぱなしで、さらには仕様レベルで設計間違ってるから直す気おきなかったよーな。。
現在はJBossをJTA/JTSサーバとして使う形で落ち着いてます。
EJB鯖としては使ってないけど、自作のCMT実装も作ってあったので。
設定もすごい簡単だし、Tomcat+JTA/JTSというつもりで使うのもいいかも。
>>733
それも重要な仕事だけど、実際はそれだけじゃなくて、トランザクション管理のコードを
プログラマの管理下から切り離して書けるメリットの方が大きいと思うよ。
>>734が書いてるような使い方も容易にできるしね。
>>738
既に正式な仕様で決まって、それなりな実装(JBoss)もあって、WebLogic/WebSphere
みたいな商用サーバにも移行できる状況なのに、なんでわざわざそんなことすんの?
フレームワーク(Strutsとか)使って必ず通るコードを規定できれば、EJB使わなくても
そこでJTA叩くコード書けば十分じゃない?
遅レス+長文すまん
0761738
NGNGJTAは普通ThreadLocal使って実装"されてるんだよ"、と
すぐ前の人に教えてあげたつもりだった。
0763デフォルトの名無しさん
NGNGSpring には JTA 抽象化レイヤがある。
> フレームワーク(Strutsとか)使って必ず通るコードを規定できれば、EJB使わなくても
> そこでJTA叩くコード書けば十分じゃない?
禿げ同。本来トランザクション境界は狭いほうが良いが、EJB の宣言型トランザクション
なんかめんどくさすぎる。基本的に境界はフレームワークの最初と最後で良いと思う。
0764デフォルトの名無しさん
NGNG>本来そうかもしれんけど、俺は DB 置き換えが必要になった
>PJ はあったことがない。あー ORマッパー使ってりゃ楽っだったのに!
>とか普通はない。あんた、どう?
自分もDB置き換えはあまり経験無いなぁ。
とりあえず、フリーのDBで作って、規模が大きくなってきたら商用DBに移行というのはあるかもしれんが、
最初からOracle使ってる場合は、DB置き換えってありえなくない?
OracleからpostgreやmySQLってパターンあるのかな?
自分の担当してるプロジェクトでトルク使うっていう案があるんだが、DBはOracleで決定済み。
SQLに精通したメンバーも数人いるので、JDBC+PL/SQL使用に間しての技術的な障壁はない。
現在、いろいろと調査してる段階なんだが、少なくても今のところは導入メリットが見えない。
ところで、トルクでOracleのrownumとかpostgreのlimitのようなことは可能でしょうか?
0765デフォルトの名無しさん
NGNGJakartaスレにあったと思うが...
Oracle使ってsql書ける要員がいて、ストアドが使えるのならば
それが一番じゃない?
0766デフォルトの名無しさん
NGNGDBAがいるんだったら、Torqueなんてのはおすすめできない。
もしやるんだったら、iBatisとかいいんじゃない?
0767デフォルトの名無しさん
NGNGiBatisを語ってくれ。
Springでもサポートされて注目株だよね。
0768デフォルトの名無しさん
NGNGトランザクションとかプールもサポートしてるみたい。
誰かがダイアリーに Database レイヤも MVC と見るべきで、Model がテーブル(ビュー含む)、
Controler が SQL、View が ResultSet のような結果だって書いてたね。
レイヤとして切り離した場合、やっぱり SQL でええやんって流れなんか?
ストアドを DB に置く、SQL を Database レイヤに置く、似たようなもんか。
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNGへー、こんなスレあったんだー、と思って>>1まで戻って読み返す気になった。
って、
あと一ヶ月で、立てられてから、1年たつんだな、ここ・・・。
0771デフォルトの名無しさん
NGNGじゃ、読んだあと 1 年前から今までの ORM 動向を
客観的にまとめて書き込んでください。
0772デフォルトの名無しさん
NGNG使ってみたらハイバネートがいいようだな。
遅延ロードとか関連づけとか、テーブル操作も
HQLとCriteriaの使い分けができるしな。
日本語情報が豊富ならカイエンもモデリングツールがついててよさげだけど、
ハイバネートのようなかゆいところに手が届くほどの機能ではなさげ。
シンプルさでは良いかも。
JDOとか、OJBは、マッピング作業自体の手間とか後のメンテ考えると、
かなり使い込んだハイスキルな人間でないと使いこなせない気がする。
って、漏れは>>770じゃないけど、そんなことを思ってみるテスト。
0773デフォルトの名無しさん
NGNGMVCって、どのレイヤー間接続においてもそういう見方にするんでわ。
Springを覚えてからそう考えるようになった。
0774デフォルトの名無しさん
NGNG総合的にこんな感じか? DbUtils はとりあえず。。。
0775デフォルトの名無しさん
NGNG本来のMVCでは、言われるような不思議な区分けはしないと思いますが。
そんなつまらないことを考えるのならば、BCEで普通にロバストネス分析
していけばいいはずです。
(無知故にMVC Model2をMVCと称し、しかも拡大適用していたのならば
話は分かりますのが)
0776デフォルトの名無しさん
NGNGテーブルとBeanは1対1対応・・・。
処理は結合も含め、全てJavaでやる・・・。
→RDBとJavaはほとんど完全に分離。
↓パフォーマンス的に問題あり
DBUtilsでRDBのテーブルをそのままマッピング、
集計処理が必要な場合、複雑な連結が必要な場合はView使用、
Viewも含め、Beanとデータベースの実体は1対1対応・・・。
→システムの一部がDBに入るので、DBの入れ替えは難しくなる。
ってやったら、小さい会社の社内システムくらいなら、簡単でいいかなあ・・・
そんなに導入にリスクもなく、学習の手間もなく、
恩恵は十分に、ってことで。
0777デフォルトの名無しさん
NGNGDBMSを使い込んで、運命を共にしましょうってところが多いってこと。そんな所
では、DBMSの移行だけで大仕事になるやね。
そもそも限定された言語環境からだけしかDBMSにアクセスしないなど、統合システム
ではあり得ないし。そこに言語限定の O/R mappingをもってきてもねえ。(w
ストアドにしておけば、建前上はどこからでも使用できて便利だし。
http://pc2.2ch.net/test/read.cgi/tech/1019996589/751
>俺もできればストアドプロシージャの方が設計としていいと考えている。
>こんな感じ。
>
> EJBのCMP/BMP
> < DAOパターンのPOJOにまとめる
> < ストアドプロシージャ
>
>単一DBMSと単一アプリによるシステムならまだしも、
>複数のシステムから同じDBMS(の同じDBスキーマ)を操作したりするなら
>ストアドプロシージャのほうがいいね。
>
>ましてや EAI のために統合DBを作りましょうなんてレベルなら、
>確実にストアドプロシージャにすべきだ。
政治的な話が絡んでこないような小さいシステムしか構築しなくていいのなら、
それこそ何でも使えばいいんじゃない?
0778デフォルトの名無しさん
NGNGConnection Poolが有効になっていないか?
0779デフォルトの名無しさん
NGNGやっぱJavaストアドプロシージャだよね。
0780デフォルトの名無しさん
NGNGDBの移行はありえない前提で、
ビジネスロジックをできる限りDB(ストアド)に入れてしまえ、と言っている?
0781デフォルトの名無しさん
NGNG政治的な話が絡んでくるのだから、DBの移行は非常に難しいだろう。
無条件にストアドで実現するのは、バランス感覚を欠きオカシイすぎる。
0782デフォルトの名無しさん
NGNGで、ストアド使うとして Java プログラムからは何でアクセスしてますか?
JDBC 直接ですか? トランザクションはどうしてますか?
0783デフォルトの名無しさん
NGNGと思っていたんだけど、>>779が言っているjavaストアド。
ttp://otn.oracle.co.jp/tech/java/jsp/
正直に知らなかったよ・・・。
これだとDBにべったりで、javaシンタクスで直接テーブルの内容を操作するような、
通常とストアドとまったく同じものを作れる、って事になるのかな?
だとすると、じゃあ、こんどは、DBの移行を考えないなら、
そして、一つのRDBを複数のシステムで使う場合、
これでDBシステムにビジネスロジックを全部盛り込んでしまっては
いけない理由は何だろう、と思ったり。
ちゃんと調べてないのでぜんぜんjavaストアドってのを誤解しているかも知れないけど。
さて。
だいぶすれ違い気味だけど、言うだけ言ってみる。
0784デフォルトの名無しさん
NGNG今すでにある JDBC でアクセスしてるクラスをストアドとして
DB に突っ込むだけ。
ん?じゃ、ORマッパ使ったクラスをストアドとして DB に
突っ込めばいいのか?って出来るんかな。
0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNG(詳細は、各種資料をどうぞ)
public static String sal_grade (String empname) {
float current_sal;
#sql {select salary into :current_sal from emp where ename = :empname };
if (current_sal > 0 && current_sal < 50000) return “ MTS”;
if (current_sal >= 50000 && current_sal < 100000) return“ SMTS”;
return (“Salary out of Range”);
}
>>783
うまく言えないんだが。ストアドでロジックが書けると言っても、何となく
これ以上のビジネスロジックは含めないでおこうというのは、PL/SQLの頃
からあったわけで。で、Javaでロジックが書けると言っても、その範囲を
大幅に超えてしまうのは抵抗がある。この辺りがバランスというやつだが、
人により感覚が違うと思うので、そういう意見もあると思ってほしい。
0788デフォルトの名無しさん
NGNGhttp://gborg.postgresql.org/project/pljava/genpage.php?userguide
0789デフォルトの名無しさん
NGNG「達人プログラマ」読みなさい。
0790デフォルトの名無しさん
NGNGで、それを鵜呑みにして、そのまんま自分の PJ に適用しようとする香具師は
どうかしている。
例えば数十万人日の PJ があったとしたら極端な話、100 階層、各 MVC でも
いいと思う。管理できればだけど。
逆に小さなプログラム(PJまでもいかない)、DB内容を 1 画面表示させるだけで完結
するようなものだったら Servlet に直接 JDBC 書いて JSP だけで十分。
Servlet だけ JSP だけでもいい。
0791デフォルトの名無しさん
NGNGDbUtilsのためにわざわざViewなんて作らなくてもいいのに
0792デフォルトの名無しさん
NGNG(顧客の)開発環境に移すときにおきそうな気が。
特にOracle8iから9iへとかさ、普通のOracleから9iRACとかさ。
異なるバージョンだけどおおよそ一緒だろって感じで使ってるの多いような。
プライムで仕事とってるSIerでも社内の開発環境にはなかなか
金かけたがらないからあちこちのプロジェクトで環境共有してそうなんだけど。
0793デフォルトの名無しさん
NGNGどういう意味? 開発(&テスト)環境と本番環境で DB が異なるってことか?
0794デフォルトの名無しさん
NGNGじゃあどうしたらいいのでしょう?
0795デフォルトの名無しさん
NGNGというか危なすぎない?
うちでは、できるだけバージョンまであわせて用意するんだけど。
0796デフォルトの名無しさん
NGNG開発側の都合でしかない部分については、「開発にとって適当な粒度」
で分ければいいって話は、MVC云々以前の話やん。当たり前やん。
0797792
NGNG顧客の本番環境&テスト環境は買ってもらえる(顧客のお金)。
でも開発は自社でやるから、社内環境は自社の金で
準備しなきゃいけない。
って状況だと、よほどお金のあるプロジェクトじゃないと
専用の環境が作れなくない?
3ヶ月で回るプロジェクトが何本もあるとどうしても環境を
いくつものプロジェクトで共有することになる。
当然複数バージョンを同居することも難しくなる。
(保守のために環境残す必要もあったりするし)
まあ、社内がPostgresSQLで本番がOracleなんて極端な
違いはないけど、Oracle8iでも細かいところが違うのなんて
よくあると思う。
>>792にも書いたようなRACみたいなH/W巻き込んだ環境は
社内では作れっこないので確実にこういう状態だな。
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNGまじで? 俺も結構な数の PJ やってきたけど開発環境と本番環境の
DB のバージョンが違うってのは無かった。
ってか、ありえんと思ってた。
で、いざ本番で動かしたら動かん、手戻りってのはないの?
0800デフォルトの名無しさん
NGNG最小限にとどめてくれるっていう側面もあるんじゃないかな。
WebObjectsのEnterprise Object Frameworkとかは、そうした
ウリもしてたしな。
開発はデフォルトで入ってるOpenBaseでやって、そのままOracleに持って行くとかできるそうだし。
0801デフォルトの名無しさん
NGNG手戻りによる人的被害、莫大な損失、信用問題が出ないとは言い切れないよね?
バージョンちがうから動かなかったら許してね、規模の PJ なら
なら問題ないと思う。
0802デフォルトの名無しさん
NGNG「これこれ、こうやると早いし簡単なんです。これでやりませんか。」
「それって、これこれこういうときって大丈夫?」
「うーんたぶんだいじょぶだと思いますけど?」
「確信できないなら、今回はちょっとやめといてもらえます?」
(うー。自分で責任持つともいえないから、じゃあ、やめとくか。たぶんだいじょぶだと思うんだけど・・・)
って感じ。
0803792
NGNG周辺ではバージョンの違いに起因するような細かな機能は使ってないから
助かってるんだろうね。
DBっていったって単にSELECT/INSERT/UPDATE/DELETEしてるだけ
なのが多いから。
当然手戻りのリスクはあるが、環境作るコストと比べたら小さいと踏んでるわけだ。
まあ、たまたま周りがそうだっただけかも知れんけどね。
会社移っていきなりこうだったのでカルチャーショックは受けた。
0804デフォルトの名無しさん
NGNGBigDecimalになるんで値をセットしてくれない。
Oracle使いの人はどうしてんの?
0805デフォルトの名無しさん
NGNG0806デフォルトの名無しさん
NGNGそれだけじゃなくほかにも幾つか問題ある。
Oracleでテストするだろう普通 -> DbUtilsの開発者
今のところはソースに手を入れるしかないんじゃないかなぁ。
で、本家に報告汁。
漏れは、Oracleでテストしていない段階で使うのあきらめた。
0807デフォルトの名無しさん
NGNGそのために RowProcessor 実装できるようになってんじゃないの?
いや、使ってないんで知らんけど。
0808デフォルトの名無しさん
NGNGOracleのJDBCドライバに原因があるんじゃないかな。
NUMBER型の列に対して
ResultSetMetaData#getColumnClassName(int)を呼び出すと
BigDecimalを返すようになっているとか。
DbUnit使ったときに同じような問題(SQL NUMBER型がBigIntegerで返ってくる)が出た。
今、手元にOracleが無いので試せませんが。
0809デフォルトの名無しさん
NGNGなんだか、単純に実装するとテーブル毎にRowProcessor書いて
しまいそうだし、そいつを共通化しようとするとBasicRowProcessorの
再実装になっちゃいそうな気がしたんだが。
BasicRowProcessorのいくつかのprivateメソッドがprotectedだったら
再利用してサブクラスで簡単な拡張するだけでいけそうなのに。
ColumnProcessorが導入される1.1に期待か。
0810デフォルトの名無しさん
NGNG型がObjectだったら型チェックせずに無条件でセットして、あとは
自分でバンバンしてね、くらい割り切ってよかったと思うんだけどね。
0811デフォルトの名無しさん
NGNGBeanの作成方法と、DAOを使用した時のDAOクラスの実装方法(AとBを連結した場合、
どっちに実装するとか)について悩んでます。
>>776 のようにViewを作成する場合は数が多いと大変ですね。
IDでマスタから検索したNAMEをトランザクションテーブルにinsertとか結構あると
思いますが。
0812デフォルトの名無しさん
NGNGだまってHibernateつかえ
0813デフォルトの名無しさん
NGNGおいらはDAOにA.setB()とかB.setA()とか他の結合可能なDAOを設定できるメソッドを作って、
クエリ時にSELECT文とJOIN文を自動生成する実装を書いたことがある。
ただしカラム名の重複には注意すること。
0814デフォルトの名無しさん
NGNGnumber型の場合BigDecimalで返すのはすごい桁数の数字返す可能性があるからしょうがないとしても、
varchar2で4000って指定したら4000byteな上に、JDBCから書こうとすると1文字3byteで計算しやがるのはどういうことよ。
おまえら、ここら辺どうやって対応してるの?
0815デフォルトの名無しさん
NGNG3byteで計算して余分な空白埋めやがった上に、
それが原因で、カラムの最大長を超えるってどういうことやねん。
読み込んだのを書き戻せないジャン。
後続の空白は、トリムもしくは指定のbyteを超えた分を
切り捨ててます。
この辺はフレームワークで吸収して欲しい。
0816デフォルトの名無しさん
NGNGvarchar2をStringで取り出すと空白は入らなかったような。
charだと空白入ってくるけど。
0817デフォルトの名無しさん
NGNG禿げ同。仕様と言い切る Oracle は糞。殿様商売で感覚が麻痺してるとしか思えん。
俺は 8i でそうだったけど、9i、10g でもその仕様のままなんだろうか?
0818デフォルトの名無しさん
NGNG10gはしらんが、9iでは変わってない。
ダメすぎ。
0819デフォルトの名無しさん
NGNGよう知らんのですが、SQLServerのvarchar(バイト単位で格納)に対する、
nvarchar(ユニコードで格納)みたいなのはないの?
0820デフォルトの名無しさん
NGNG今度WEBサービス(SOAP・MESSAGE)でORマッピングやろうと思ってるんですよ。
Castorを使ってテストで買い物サイト作ったことがあって結構いいかな、って思ったんですけど
結構Hibernate良いって言っている人もいるっぽいので。
どうでしょうか?
0821デフォルトの名無しさん
NGNGスキーマのリバース&ソース自動生成ができるのが(・∀・)イイ!
0822デフォルトの名無しさん
NGNG0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNGXMLとか書かないとだめ?
0825デフォルトの名無しさん
NGNGXMLファイルでやるんじゃなかったっけ?
プロパティファイルだったか?
0826デフォルトの名無しさん
NGNGイッパツ生成してくれんだね。
0827デフォルトの名無しさん
NGNG0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNGそう。要は1テーブル分しか作れない。
0830デフォルトの名無しさん
NGNGBasicRowProcessorをコピペして、
ConvertBigDecimalRowProcessorとかいうのを作って対応しました。
将来的には、標準で対応されるだろうから、
それまでのつなぎと思って使います。
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNGHibernateもCastor JDOも両方使ったことあるけど、
Hibernateの方がO/Rマッピングの自由度が高いし、
クラス設計上の制約も少ないからやりやすいよ。
0835デフォルトの名無しさん
NGNGEJB のトランザクション制御イラネー
とりあえず Hibernate + SeasarV2 に期待。
0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNGコピペ厨Uzeeeeeeeeee!
0838デフォルトの名無しさん
NGNGその組み合わせで何がうれしいかというと
EJBっぽく宣言的トランザクションができることかと。
あと、EJBのトランザクションはRDBMSだけじゃないよ。
0839デフォルトの名無しさん
NGNGコード中でも宣言できるし、POJO で宣言トランザクションできるってのが
大きいと思う。DbUtils とかと組み合わせたりとか。
EJB のトランザクションって RDBMS 以外にどんなのが使われてるの?
0840デフォルトの名無しさん
NGNGJMS(WebSphere MQ)
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNGキャッシュのオブジェクト上限値(maxElementsInMemory)を設定して
いますが、上限値を超えてもキャッシュから取得できてしまいます。
overflowToDiskを"false"と設定した場合は、キャッシュから削除される
と思っているんですが、他に設定等あるのでしょうか?
よろしくお願いします。
0844デフォルトの名無しさん
NGNGライセンスが英語なんで分からんす・・・
ttp://seasar.sourceforge.jp/
0845デフォルトの名無しさん
NGNGひとことでいえば、「好き勝手に使っていいぞゴルァ!」ってこと。
0846デフォルトの名無しさん
NGNGんなこたあない。
ASL 1.1ライクなライセンスになってるので
http://www.terra-intl.com/wiki/?Apache%2FSoftware%2FLicense
でも参考にしてくだしあ
宣伝条項も忘れずにね
0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGこのスレの721です。Strutsを使われている人が居たら
アドバイスを頂けたらと思います。
私はHibernateを使っています。HSQLでテーブル名を全部大文字
にしたら怒られた(実行エラー)のって私だけでしょうか・・・。
0849デフォルトの名無しさん
NGNGとりあえず、質問の仕方の基本や、掲示板のマナーを理解してから出直してくれるか?
0850848
NGNGマルチポストだと思われてるんでしょうか。
流行の言葉で言えば、TrackBackみたいなものだと思っています。
是非理由を聞かせてください。
0851デフォルトの名無しさん
NGNG使ってるDBMSは書いていないわ、JDKやHibernateのバージョンは書いていないわ、
どういうコードでそうなったか説明していないわ、レス番号を指定しないでリンクを貼るわ…
一番の基本を言うと、それで動くかどうか、まず自分でやってみろよって話だよ。
あとは自分で作ったBeanの役割くらい性格に理解しろ。
フレームワークの情報交換やそういうレベルの話ではない。
ここはサポートじゃないんで、まず基本を理解しているのかも怪しいうえに
実際に試しても見ない奴に、誰も回答はやらないよ。
0852デフォルトの名無しさん
NGNGは・げ・ど・う
0853デフォルトの名無しさん
NGNG主張ばっかりで責任は果たさんと。
0854848
NGNG>私はHibernateを使っています。HSQLでテーブル名を全部大文字
>にしたら怒られた(実行エラー)のって私だけでしょうか・・・。
これは質問っていうか愚痴。Fromの後はテーブル名でなく、対応するうクラス名
なんだね。激しく勘違いしてました。
>レス番号を指定しないでリンクを貼るわ…
721って書いて在るじゃん・・・。
0855デフォルトの名無しさん
NGNGでは、これからは
http://pc5.2ch.net/test/read.cgi/tech/1068207164/721
と書くようにしてください。
0856デフォルトの名無しさん
NGNG>一番の基本を言うと、それで動くかどうか、まず自分でやってみろよって話だよ。
>あとは自分で作ったBeanの役割くらい性格に理解しろ。
>フレームワークの情報交換やそういうレベルの話ではない。
>ここはサポートじゃないんで、まず基本を理解しているのかも怪しいうえに
>実際に試しても見ない奴に、誰も回答はやらないよ。
0857デフォルトの名無しさん
NGNGそれより漏れは
848>>HSQLでテーブル名を全部大文字にしたら
851>JDKやHibernateのバージョンは書いていないわ
HSQLとSQLを勘違いしてるって何故に突っ込まない?
JDKのバージョン云々こっちの方が笑える。
俺的に重要なのは
>あとは自分で作ったBeanの役割くらい性格に理解しろ。
だけだな。実際やってみてるから、エラーでつまずいてんだろうが(アハ
DTOはそもそも冗長なもので、848はFormとテーブルがまったく同じに
なっちまったから、なおさらその冗長性を疑問に思ったんだろ。
そろそろ、スレの本題に戻ろうか。ってもネタが出尽くしてる
みたいだが。
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNGやってみてエラーになりましたなんて一切書いてないぞ。
同じようなクラスが出来るけど、共用できるんですか?だろ。
やって正常に動かないなら、質問するまでもない問題。
0860デフォルトの名無しさん
NGNGわかったから。もういいよ。
0861デフォルトの名無しさん
NGNGまー、お前が何人かをムカつかせたのは事実。
2chごときでのコミュニケーションスキルが足りないってこった。
もう書き込むな。素直にROMしてろ。
0862デフォルトの名無しさん
NGNGそんなに悔しかったのか?
指摘した奴がむかつかせたのは質問者だけ。
質問した奴がむかつかせたのは見ていた奴の殆ど。
0863857
NGNG>同じようなクラスが出来るけど、共用できるんですか?だろ。
Strutsスレの方よく読んだか?出来る出来ないの話じゃないだろ。
すべきか、すべきじゃないかの設計の話。それとも絶対に出来ない
とでも言いたいのか?
>やって正常に動かないなら、質問するまでもない問題。
動く動かないの話じゃない。
だから851の書き込みも
>あとは自分で作ったBeanの役割くらい性格に理解しろ。
って設計の指摘になるんだろう?
>>858
JDKのバージョン書かないと、変なのに絡まれるぞ(ワラ
ちなみにこんな感じか。
session.find("from Test where key1 = ?, key2 = ?",
new Object[]{"test", new Integer(1)},
new Type[]{Hibernate.STRING, Hibernate.INTEGER})
手元に動く環境が無いから間違ってたら、きもいやつか、まともな
人が突っ込んでくれるだろう。検索キーが多くなったらcreateSQLQuery
で使うと、いいかもしれん。
もう少しマターリやろうや。
0864デフォルトの名無しさん
NGNG> もう少しマターリやろうや。
とか言いながら、一言多いね↓
> 手元に動く環境が無いから間違ってたら、きもいやつか、まともな
> 人が突っ込んでくれるだろう。
0865デフォルトの名無しさん
NGNG複合キーセレクト、クスコ!
明日試してみるね!
0866デフォルトの名無しさん
NGNG各Beanがどうしてそういう構造になって、どういうデータが入って、
入ったものの状態がどうなって、それを踏まえたうえで
分けるべきかどうかの理解をしていないんだから、
分ける分けないの回答だけ教えても意味ないんじゃない?
親切な君が向こうのスレで、手取り足取り一から教えてあげれば?
0867デフォルトの名無しさん
NGNG>>850
>全然マナーが悪い事してないと思っているんですが。
0868デフォルトの名無しさん
NGNG>Strutsスレの方よく読んだか?出来る出来ないの話じゃないだろ。
>すべきか、すべきじゃないかの設計の話。それとも絶対に出来ない
>とでも言いたいのか?
読解が2者に分かれている時点で、質問が悪いんじゃないかと思う。
0869デフォルトの名無しさん
NGNG偉そうにマナー違反ではないですなんて言わずに、もう半年ROMれってことだ。
TrackBackって言いたいだけちゃうんかと。
リンクだけ張っても、元スレが過去ログ行きになったら
なんの話だかも解らなくなるわけだし。
0870デフォルトの名無しさん
NGNGまだ、このスレはいいほうだってのが分かるな。
0871デフォルトの名無しさん
NGNGプロジェクトの都合でDAO自作の場合に設計とか
参考になる書籍・サイトはありますか?
Entityクラスのリレーションオブジェクトを取る時に
・Entity#selectRelation(key)みたいなのを定義すると
Entity is DAO になるんで悪い設計?
・フェッチするときにリレーションまでごっそり取得して
Entity has Relation(Collection)で持たせるのはあり?
とか悩みます。
0872デフォルトの名無しさん
NGNGだれも質問の仕方の悪さや、掲示板の使い方を指摘しないと、
厨房的な振る舞いの奴ばっかりになって荒れるぞ。
誰かが悪役を買って(まぁ匿名だけど)注意してくれるから、
掲示板のルールというものが維持されていくのではないかと。
0873デフォルトの名無しさん
NGNG現時点で一番認められている Hibernate を参考にすれば?
書籍とかサイトでは Hibernate 以下しか望めない。
0874デフォルトの名無しさん
NGNG0875デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNGクスコ
0878デフォルトの名無しさん
NGNGDAOのGeneric化は、現在のJavaではできない、という説がこのスレで囁かれているようですが、
そんな事はなく、Java 1.02レベルでも充分できるはずです。
以上、ご参考情報でした。
0879デフォルトの名無しさん
NGNGここで荒らしてる人物、俺が数年前に情死す板でORマッピングのレクチャーしてやった厨房のような気がする。
奴はルサンチマンの塊で、趣味はスレ潰しだから、放置しておくのが一番だよ。
0880デフォルトの名無しさん
NGNGアホな質問して逆切れするほう?それを注意するほう?
0881デフォルトの名無しさん
NGNGなんか恥ずかしくなる・・・
0882デフォルトの名無しさん
NGNG巨人阪神戦のチケット、差し上げますー
0883デフォルトの名無しさん
NGNG品川駅の方面の業者さんですか。
わざわざご苦労様です。
0884デフォルトの名無しさん
NGNGSessionFactoryからsessionもらって、そこから connection()メソッドで
JDBCコネクション(java.sql.Connection)を得て、
あとはCallableStatement使ってSP呼んでやればいいのかと思ったんだけど、
SPが実行されないような感じ。
だれか成功してる人いる?
ふつうに、DriverManager#getConnection()使うと、問題なくSP呼べるんだけど。
0885884
NGNG使ってるRDBMSが、IBMのDB2 v8.1?だったんだけど、
スキーマ名を指定してやらんといけない場合に、SP呼ぶときだけ
スキーマ名がCase Sensitiveだった。。。
イメージとしては、
session = factory.openSession()
connection = session.connection()
CallableStatement stmt = connection.prepareCall("CALL SCHEMA-NAME.sp(?)")
stmt.execute()
ってな感じだった。
吊ってくる。。。
0886デフォルトの名無しさん
NGNGレクチャーしてくれ。
0887デフォルトの名無しさん
NGNGGimme a lecture!
0888デフォルトの名無しさん
NGNGここで設定したコネクションプールをきちんと使えているかどうかの確認って、
どうやったらいい?
SessionFactoryからsessionを取得した複数オブジェクトに対して、
System.identityHashCode()
を用いて確認を試みると、1カ所のメモリしか使ってないような印象を受ける。
0889888
NGNGhibernate.cfg.xmlに、プーラーの設定せんといかんかった。。。
<property name="c3p0.min_size">1</property>
<property name="c3p0.max_size">3</property>
<property name="c3p0.max_statements">10</property>
<property name="c3p0.timeout">100</property>
<property name="c3p0.validate">true</property>
<property name="hibernate.connection.provider_class">net.sf.hibernate.connection.C3P0ConnectionProvider</property>
こんなかんじ。
max_size超えた接続時には、ちゃんと待ちになってくれるようになった。
最初は、プーリング設定は
<property name="hibernate.connection.pool_size">3</property>
これしか書いてなかった。。。
これって、built-in poolingってやつかな?
プーラーはc3p0使った。Hibernateにも同梱されてる。
(ttp://sourceforge.net/projects/c3p0)
0890デフォルトの名無しさん
NGNGHibernateUtilなんていうクラスでセッションを取得する場合、
コネクション・プーリングは有効なんかね?
0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG数万件オーダーの結果が返ってくるようなWebアプリで使うのは、やっぱり避け
るべき?
これが心配でTorqueも回避したんだけれども。
0893デフォルトの名無しさん
NGNGBeanutilsのDynaBeanとか。
0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNGHibernateUtilで実装されているセッション取得方法だと、
コネクションプールは使わないだろ。
SessionFactoryから、openSessionだかなんだかしてやるべし。
(SessionFactoryは、1つのRDBに対しては必ず1つであるべきらしい)
んで、設定ファイルにもちゃんとプーリング設定すること。
ConnectionProviderを設定しないとプールは使われない。
0896デフォルトの名無しさん
NGNGよくはしらんが、逐次streaming処理っぽいことをやるんなら
ResultSetIteratorをつかうか、独自にResultSetHandlerを定義すれば
よさげ。ただ、もともと薄いDbUtilのラップがさらに薄い感じになるんで
あまり旨味はないかも。
0897デフォルトの名無しさん
NGNGHibernate使えば?1回の取得件数とか指定できるよ。
ページング処理みたいな感じで。
0898デフォルトの名無しさん
NGNGだから何?
つうくらい薄っぺらくてやんなる。
フレームワークやクラスのデザインするわけでもなく、
「ただ〜というフレームワークでは〜という機構を使ってるから、順当な設計では〜は無理」
って、アタマ悪そうな会話だよな。
理想のSQLなりRDBなりを忠実にモデリングした言語使いたいなら、
PL/SQLでも使ってろって感じ。
でも、そーゆー普通の人々でも仕事こなせるような環境が、工学的には良い環境、
なのだという事実に思いを巡らせると、うーん、(自粛
0899デフォルトの名無しさん
NGNGあれこれ言いたい気持ちは理解できる。
でも、便利なモノがあって、アーキティクチャまで理解せずとも
効率と品質がある程度確保できることがそれなりに把握できていれば、
それを選択することは間違っていない。
世の中は、「道具を作る人」と「その道具を使う人」がいる。
全員が作る人になったら意味ないだろ。
それに、ここは、Java<->RDBのマッピングフレームワークを語るスレだ。
おまいさんが語りたい内容とはスレ違いだと思われ。
RDB自体か、フレームワークやクラスをデザインすることを語るスレに逝け。
0900デフォルトの名無しさん
NGNGだから何?
0901デフォルトの名無しさん
NGNGこれだから、理論屋は使い物にn(ry
0902デフォルトの名無しさん
NGNG0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNGおまいさんら、ORマッピングの目的って、何だと考えてるの?
問いかけのない無目的な行為は、地獄への直通列車だよん。
0908RDB素人 (永遠に素人のまま済ませたいものだ)
NGNGところで、最近 Result Cache って普及してるの?
ResultCacheっておおまかに言って、
同じqueryで検索対象が更新されていなければ、キャッシュした検索結果を返す機構で、
KIVA AS〜Netscape AS〜iPlanet iASの系譜でJavaによる初期の実装が行われてたらすぃ。(@ITに関連記事あり)
2000年頃には、既にResult Cacheという単語がGoogle上からすら消えていて、
Oracle8iかなんかが似たような機構を次期リリースで提供、とかいう話は確認したのだけれど。
なんでこんな古い話題を振るかというと、KIVAのメンテ&アプリサーバ変更の話が(ry
日本ネットスケープの残党はどこに(ry
0909908
NGNGAS〜KIVAの情報収集で、ちゃっかり海外出張した上司は、今ナニをやってるのやら
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNGttp://www.google.com/search?num=50&hl=ja&ie=UTF-8&oe=UTF-8&q=KIVA+%2B%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%90&lr=lang_ja
0912デフォルトの名無しさん
NGNGまだ試してもいないけど、リレーション情報まで抜いてくれるのかな。
WOのEOModelerを参考にしてるようだからやってくれそうだけれど。。
HibernateのFAQでなぜGUIツールが付いてないのか?の問いに対して、
「GUIなどの補助ツールが必要なフレームワークってのは、
単体で使えないほど設計がタコいんだよ」
みたいな解答があったような気がする。
そりゃあそうだけど、やっぱ楽したいよ。
ってなもんで、jFaceDbcで基本情報抜いて、マッピングファイルの細かいところは
手作業でシコシコってパターンが一番多い。。。
0913デフォルトの名無しさん
NGNG俺は一日試しただけだけどリレーション情報抜いてくれるよ。
ただしインサート時の主キー生成の方法とかが何かと問題に
なるのは事実。
カスタマイズは一応できるようになってるけどまあ大体は
DBMS依存だしね。Oracleでは主キーを自動生成したいばあいは
シークエンスを使うのが一般的だけど……ってなあたりから
想像はつくでしょ。
主キー生成をGenericな実装にしようとするとSPと行ロックは
最低限欲しくなるけどこれまたDBMS依存の世界だからねー。
0914デフォルトの名無しさん
NGNGすげー、懐かしい名前だw
NASは今はどうなってるの?
0915デフォルトの名無しさん
NGNGHibernate デュアルレイヤ・キャッシュ・アーキテクチャ
http://www.hibernate.org/4.html#A43
0916デフォルトの名無しさん
NGNG0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNG0922デフォルトの名無しさん
NGNG述べられないが、おれも>>918がただしいと思う。
0923デフォルトの名無しさん
NGNGポータビリティーを指向してる点がちと違うのでは。(ポータビリティーなんて嘘だけど)
ORマッピングは、RDBのテーブルへアクセスする方法をOOっぽくするもの。
誕生したときの狙いはこれぐらい違うはずだけど、使い方次第では
同じにもなる。って感じかな?
0924デフォルトの名無しさん
NGNG分散オブジェクトを取り扱うための実装とビジネスオブジェクトの実装方法を提供してるんだし
0925デフォルトの名無しさん
NGNGいまや曖昧だよな。
0926デフォルトの名無しさん
NGNG分類のための言葉なんて、そんなもんだ。
かならず境界部分はあいまいになる。
0927デフォルトの名無しさん
NGNG技術 ⊃ フレームワーク
イギリス人とベッカムの違いを述べよ、っていうのと同じ無意味な質問だ。
0928デフォルトの名無しさん
NGNGttp://www.ibatis.com/common/sqlmaps2.html
0929デフォルトの名無しさん
NGNGEJBもフレームワーク。
これはフレームワークとライブラリの差のはなしか。
0930デフォルトの名無しさん
NGNG「……つぎは私からかけるから。」
0931デフォルトの名無しさん
NGNGお互いにかけあえる仲
ということは両方男ですね
0932デフォルトの名無しさん
NGNGDon't call us, we'll call you.
0933デフォルトの名無しさん
NGNGhibernate.cfg.xmlは、SessionFactoryがbuildされる毎に読まれる。
hibernate.propertiesは、Hibernateのイニシャライズ時に1回だけ読まれる。
0934デフォルトの名無しさん
NGNGxbm.xmlは、作るのが死ぬほどめんどくさい。
0935デフォルトの名無しさん
NGNG*.hbm.xmlのこと?
Eclipse用のjFaceDbcプラグイン使うといいよ。
DBに接続して、hbm.xmlファイルにしたいテーブルを選択して、
Hibernateへ出力する命令を実行すると、基本的なマッピングファイルが
自動で作られるよ。
あとは、many-to-manyとかのリレーション情報とかが必要なら、そこから
手作業で修正とかすりゃいいし。
0936デフォルトの名無しさん
NGNG0937デフォルトの名無しさん
NGNGいいサイトある?
0938デフォルトの名無しさん
NGNGカイーネ?
0939初期不良
NGNGカイエン、と書いてるね
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGオレンジ色のにくい奴。
0944デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNGすこしは調べてから書けよ。無知。
0947デフォルトの名無しさん
NGNG本当に薄いラッパーなので、ResultSet取り出しが若干オブジェクティブになる程度。
その分速度は速いらしいが、DBUtilsの恩恵を受けるためにはQueryRunnerを使いまわしたり
色々面倒だしコード書き直しも沢山あるんで、俺は結局使わない事にした。
あと、無名クラスをガンガン書きまくるハメになるのでは読み辛くて嫌だ。
0948デフォルトの名無しさん
NGNGRowProcessor書けばいいじゃん
0949デフォルトの名無しさん
NGNGしてる?
いわゆるSELECT FOR UPDATEを使いたくなるようなケース。
参照→更新処理って実は大体こうだと思うんだけど。
JDBC2.0では更新可能なカーソルやカーソル名の取得が定義されちょるけど
ドライバによっては対応してないし、マッピングフレームワークとも
なると、正直不透明過ぎてわけわからん。
そもそも思いっ切りDBMS依存だけどデータ一貫性保証のためには絶対に必要、
という困り者。SPにできるんならSPで実装してしまうのが正しいのかな。
これもDBMS依存だけど。
それと、よく困るのは一意制約違反のエラー。これはシステムエラーでも
何でもないから、ちゃんとひろってアプリレベルでの対応が必要に
なるんだけど、SQLExceptionから一意制約違反であることを確かめる
には、DBMS毎のエラーメッセージのパースが必要になる。
0950デフォルトの名無しさん
NGNGいつもは最終更新時間か、レコード更新回数をフィールドに持たせてる。
0951デフォルトの名無しさん
NGNGようするに、
参照(1)→ユーザがブラウザ側で手入力→更新(2)
で、(1)と(2)の間には無限大になり得るタイムラグがあるから、
その間のロックなんかできませんぜ、ということですよね。
無論その通りで、それゆえに(2)の時に再参照を行って、衝突があったかどうか
確認してるんだろうけど、その際の再参照→更新は
行ロックすべき、ですよね?
そこをatomicにできないんなら、論理的にはその間に衝突が発生する
可能性がある訳だから。
0952デフォルトの名無しさん
NGNGデータベースアクセスは JDBC でしこしこが一番。
0953デフォルトの名無しさん
NGNGCriteriaクラスを使うよりも、HQL使ったほうが高速。
でも気持ち的にはCriteria使いたい。
0954デフォルトの名無しさん
NGNGselectの時に自動的にBeanに放り込んでくれる点はDBUtilと一緒だけど、
SQLMapsならinsert/update/deleteもBeanで自然に操作できる。
0955デフォルトの名無しさん
NGNGSaveOrUpdateとかカスケードした更新とかって出来ないの?
Hibernateのためにテーブル設計するのもなって思うんだが
漏れは何か勘違いしてるだけかな。
0956デフォルトの名無しさん
NGNGHibernateを利用したアプリに必要なテーブルを、XDoclet使って作ることもできるし、
既存テーブルをオブジェクトにマッピングさせてもいいし、どちらでも好きな方法とればいいじゃん。
マッピングの基本を見直してみるのもいいかも。
ttp://www.ozacc.com/library/java/hibernate/doc/html/or-mapping.html
0957デフォルトの名無しさん
NGNGttp://www.exadel.com/products_ORMstudio.htm
私たちのユニークかつビジュアルな「ドラッグ&コネクト」アプローチで
Eclipseの実力を拡張する Exadel ORM Studio (Hibernate Edition)は、
HibernateのORMマッピングを用いて、あなたのアプリケーションに
より効率的な企業データベースアクセスをもたらします。
----
評価版あり。
0958955
NGNG主キーが文字列型の場合ってgenerator classはassignedしか
使えないって思ってるんだけど、そもそもその考えが間違ってるのかな。
それかIdentifierGeneratorを実装するか。
その前に主キーが文字列型って時点で痛すぎか?・・・
0959デフォルトの名無しさん
NGNGuuidを使うとかは?
0960デフォルトの名無しさん
NGNGiBatisってソース公開されてないのかな?
0961デフォルトの名無しさん
NGNGhttp://www.ibatis.com/common/download.html
0962デフォルトの名無しさん
NGNG探し方が悪いのかな。
iBATIS_DBL-2.0.0.274.zipとは別のところにありますか?
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNG俺はCVSから取ったけど
0965デフォルトの名無しさん
NGNGみなさま ありがとうございました<(_ _)>
09661
NGNGこのスレ立てた1年以上前、社内の案件でDBアクセスにO/R-Mapping使うのは
どうかーなんて話しがあって、情報収集も兼ねて立てたってのが経緯だったんだけど。
結局、各種マッパーを評価する時間も無く、自前でDAOとか作ったというオチ。orz
その後、転職して今はHibernateをメインで使ってる。
そういや、O/R-Mappingツールって、ぜんぶ海外産ばっかりだなぁ。
スレ違いだけど、S2なんかの国産コンテナも出てきてることだし、
よしいっちょO/R-Mappingもどきを勉強してみるかーと思った三十路の夏。
とりあえず、DBのテーブル構造を、リレーション情報含めてリバースしてくるところまではできた。
途中で挫折すっかもしれんが、気長にやってみる。
目指すはEOF+EOModelerなんだがな。夢のまた夢、白昼夢か妄想かってところだね。
いやいや、オナーニで終わりそうなヨカンヌ映画祭。
0967デフォルトの名無しさん
NGNGスレ使い切ったら終わりでもいいかな。。。
0968デフォルトの名無しさん
NGNGたてといてくれ。
0969デフォルトの名無しさん
NGNGアイサー
とりあえず天麩羅整理してくるわ
手持ちのBoolmark、Hibernate関係ばっかりだな。。。鬱
0970デフォルトの名無しさん
NGNGORマッピングは、これからだしな。
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNGSQL叩いてMapオブジェクトを次々と返すイテレータあればそれでいい
0973デフォルトの名無しさん
NGNGDbUtil
0974デフォルトの名無しさん
NGNG「Java⇔RDBのMapping-Frameworkを語るスレ Vol.2」
ttp://pc5.2ch.net/test/read.cgi/tech/1086315004/
0975デフォルトの名無しさん
NGNG乙。
ひじょーに乙。
充実しすぎです。
0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNGiBATIS SqlMap
0978デフォルトの名無しさん
NGNG0979デフォルトの名無しさん
NGNG新スレのテンプレに目を通すので精一杯。
0980デフォルトの名無しさん
NGNGINSERT
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNG0983デフォルトの名無しさん
NGNGレス数が950を超えています。1000を超えると書き込みができなくなります。