1 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 11:54:44 ] 前スレ: Java⇔RDBのMapping-Frameworkを語るThre Vol.3 ttp://pc8.2ch.net/test/read.cgi/tech/1090653286/ 過去スレ: 「Java⇔RDBのMapping-Frameworkを語るスレ Vol.2」(落ち) ttp://pc5.2ch.net/test/read.cgi/tech/1086315004/ 「Java⇔RDBのMapping-Frameworkを語るスレ」(落ち) ttp://pc5.2ch.net/test/read.cgi/tech/1049030272/ ●まずは、基礎知識と技術選択指針など [The Fundamentals of Mapping Objects to Relational Databases] (RDBに対するオブジェクトマッピングの基礎(英語)) ttp://www.agiledata.org/essays/mappingObjects.html [O/R-Mappingツールの比較サイト(英語)] ttp://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison [Catalog of Patterns of Enterprise Application Architecture (PoEAA)] ttp://www.martinfowler.com/eaaCatalog/ あとは>>2 以降
231 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 13:38:21 ] Cayenneで部分読みしたいんですがどうすればわかりません。 サンプルが落ちているところをご存知の方いませんか?
232 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 19:56:18 ] >>231 SelectQueryのsetPageSize()じゃ用途に合わないのかな? Cayenneのページにサンプルがあるよ。 ttp://www.objectstyle.org/cayenne/userguide/perform/paged-queries.html
233 名前:231 [2006/05/29(月) 11:43:03 ] >>232 サンクス 見てみます。
234 名前:デフォルトの名無しさん [2006/05/31(水) 14:58:57 ] 参照系だけの場合、HibernateとJDBC直書きとどっちがパフォーマンスいいですか? キャッシュの設定によってはHibernateのが早かったりする?
235 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 19:46:51 ] ストアド化しろ
236 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 22:47:03 ] つうか素でHibernateのほうが速いだろ。
237 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 01:50:11 ] それはほとんどない。
238 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 22:10:42 ] どういう設定をしたら参照がJDBCより遅くなるのかと。あらゆる局面で lazyオフでキャッシュなしか?
239 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 22:27:56 ] >>238 いくつかは考えられるだろ。 ・最初の一回目の検索の場合(Hibernateが該当するオブジェクトをまだロードしていない状態) ・ストアドプロシージャを呼び出す場合(Javaアプリ側でなんとかするより、ストアド使った方が速い場合が多い)
240 名前:234 mailto:sage [2006/06/03(土) 00:48:56 ] みなさんレスありがとうございます。 ちなみに、バッチ処理で1回のみですがテーブル全件舐めたりします。 1回きりの場合だとHibernate導入するメリット無さそうですね・・・(パフォーマンス面で)。 ストアドである程度書いてJDBCで呼ぶってのが理想的みたいですが、ストアドで作るとメンテできん!って怒られます。 バッチでストアド無しでパフォーマンス高くする手ってなんかないですかね〜・・・。
241 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 11:17:37 ] バッチ処理でHibernateを利用する理由はほとんど無いな。
242 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 15:39:34 ] O/R-Mappingでやってることって、結局 ・バックグラウンドでSQLを作って投げる ・返ってきたresultsetをbeanに自動的にマッピングしてcollectionに詰めて返す が本質だよね? そう考えると、DbUtilとかでも十分なのかな。。。 うちの会社、こういう新しい?技術とかの導入に消極的だし、 新しい知識を積極的に勉強しようっていう技術者も少ない。。。 個人的にはiBATISあたりがよさげなんですが、使ってる人いますか?
243 名前:デフォルトの名無しさん [2006/06/03(土) 16:15:01 ] キャッシュとか遅延ロードが主なメリットじゃない?
244 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 16:38:13 ] 関連テーブルの紐付けが嬉しい。
245 名前:デフォルトの名無しさん [2006/06/03(土) 16:46:05 ] 今一これの利点が分からないんだけど いちいちXMLとかに定義しないと使えないわけ? extends MySQLObjectとかしてささっとプロパティだけで完結して欲しい。
246 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 17:12:28 ] >>242 関連テーブルを自動的に取ってきてくれるという重要な機能が あるでしょ(これはDbUtilにはない)。
247 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 17:15:40 ] >>245 つ 無定義Hibernate ttp://www.fk.urban.ne.jp/home/kishida/kouza/hibonrails.html 俺の場合はCayenneを使ってDBのDDL作成とマッピング定義作成を Cayenne Modelerで同時にやっちゃうので、ORマッパーを使ったからと いってそんなに負荷は変わらない感じ。
248 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 17:25:55 ] 最近はどこのO/Rマッパーもテーブルからのクラス自動生成機能持ってる JPA使えばXMLファイルはもういらない
249 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 17:33:59 ] >>247 ふーん。いいね、組み込みDBとかで気軽に永続化できるようになると ゲームとかも作りやすくなっていいかなぁ
250 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:05:00 ] >>245 MiddlegenでもXDocletでも、Hibernate Annotationでも、好きなの使え。
251 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 22:05:18 ] JPAの解説記事少ないなあ。 みんなxmlでしこしこやってるの?
252 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 23:30:24 ] >>240 いまPro EJB3を読んでるところだと思われ。 でもなんでそこでxmlが出てくるのかわからない。
253 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 10:14:29 ] >>251 Java Persistence APIってなんなの?
254 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 10:26:06 ] ORまっぱの仕様
255 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 11:20:29 ] >>254 jspタグライブラリでも使用できるらしいけど。 ってことは、jspでDBアクセス用ってことか・・・。不要じゃん
256 名前:デフォルトの名無しさん [2006/06/09(金) 16:54:17 ] それはJPAを使うタグライブラリのこと JPAの仕様とは関係ない JPAは、HibernateやTopLinkを元にしたO/Rマッピングの標準仕様のこと
257 名前:デフォルトの名無しさん mailto:sage [2006/06/10(土) 18:42:38 ] >>255 JSPタグライブラリにJDBCタグライブラリがあるが、JDBCはJSPでDBアクセス用か?
258 名前:デフォルトの名無しさん mailto:sage [2006/06/10(土) 20:18:24 ] そう。
259 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 13:51:28 ] アホな流れになってるな。 子供か!!
260 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 16:52:36 ] そう。
261 名前:デフォルトの名無しさん [2006/06/13(火) 22:09:47 ] Hibernate2xで関連テーブル使ってmany-to-manyでマッピングしてる時、bagとかのwhere属性で関連先のテーブルのカラムに対する条件って書けますか? 普通にカラム名と条件書くと関連テーブルにそんなカラムねーよ!!って怒られちゃうんですが・・・。
262 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 07:18:09 ] 能動的にコーディングできるってだけで、O/Rマッパーはチューニングに向いてないんだな
263 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 09:18:08 ] 少なくとも、困ったときに直にSQL書いて実行できるようなフレームワークじゃないと、 使えないなあというか使うの怖いなあ。 まあそのときだけJDBC使えって話はあるけど。
264 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 10:19:43 ] Hibernateは問題ないな。
265 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 10:26:34 ] >>263 ibatis
266 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 11:37:06 ] でも直に書けるフレームワークは、普段から直に書く様に成って、後で困る罠。
267 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 17:14:33 ] >>266 そういう開発者、いそうだね。特に新規に導入するとき、わからない→直書きってされそう
268 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 23:34:39 ] でもハマった時の最後の手段として、SQLとかJDBC APIとかとも上手く連携してくれるのがいいなぁ。 プログラマとしては逃げたくなくても、サラリーマンとしてそういう手段に逃げちゃう時が多々あるんで・・・・・・。
269 名前:デフォルトの名無しさん [2006/06/17(土) 11:50:26 ] Hibernate3とEJB3、これから作るシステムに入れるならどっちがおすすめ?
270 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 11:51:43 ] 今までどおりの使い分け
271 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 11:57:00 ] ゲームで使えそうなORMはHibernateくらいかい?組み込みたいのでオススメを聞きたい
272 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 14:51:30 ] >>269 EJB3を使ってJPAの実装としてHibernateを利用
273 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 14:52:33 ] >>271 つうか、これからはJPAという標準になるんだから、ゲームで使うくらいならTopLinkもHibernateも大差なかろう。
274 名前:269 mailto:sage [2006/06/18(日) 01:32:50 ] >>270 今までEJBって使った事ないんですが、使い分けってどんな基準ですか? >>272 なるほどー。 使い分けってよりJPAの実装としてHibernateを選択って感じなんですね。
275 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 02:45:06 ] >>274 いままで使ってなかったのはEJB2 EJB3とは別物。 ORマッピング使うなら、EJB3で十分。 実質的にはHibernateの仕様がEJB3になったわけだから、EJB3とHibernateをどう使い分けるかということが、そもそもナンセンスということになる。
276 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 02:57:00 ] >>275 リモートで呼び出せるかどうかのみ違う。 使い分けはそこだけかな。
277 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 03:02:14 ] JPA仕様とそれぞれのORマッパーって結構違うんじゃない? Hibernateについては同感だけど。 たとえばCayenneもJPAをサポートするといって準備しているけど、Cayenneの 発想とJPA(Hibernate)のやり方(というか考え方)って結構違うように思う。特に トランザクションを意識させない設計とか、どうすんだろ、と思う。 TopLink(Grassfishに組み込みのやつ)とかはどうなんだろうか。
278 名前:275 mailto:sage [2006/06/18(日) 03:47:22 ] >>277 HibernateもCriteriaとかProjectionとかがEJB3に取り入れられてなくて残念なんだけど、ORマッピングのプログラムインタフェースの部分だけを見ればJPA準拠ならHibernate互換ということになるんじゃないかな、と思ってます。
279 名前:275 mailto:sage [2006/06/18(日) 03:53:08 ] >>277 重箱の隅だけど、GlassFishね。草みたいな魚じゃなくて、ガラスみたいな魚。 TopLinkは、JPAの実装として使う限りでは、個性を感じない。 もちろん、どのJPA実装も、JPAの実装として使う限りでは個性を感じないというのは当たり前の話ではあるんだけど。
280 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 05:50:23 ] パフォーマンスの差とかあるのかな?
281 名前:275 mailto:sage [2006/06/18(日) 08:08:21 ] それぞれの固有の機能を使わない限りは、無視できるほどの違いしかないと思う。 でも実測値がほしかったら、実サーバーで確認するのんが確実
282 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 23:13:24 ] Hibernateが特許侵害だとよ。 ttp://japan.cnet.com/news/ent/story/0,2000056022,20157827,00.htm >テキサス州の連邦地方裁判所に今週提出された訴状によると、 >原告のFireStar Softwareは、JBossのHibernate 3.0が同社の >「オブジェクト指向ソフトウェアを用いた、リレーショナルデータベースの >リンクに関する特許」を侵害していると主張しているという。
283 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 01:49:42 ] >>282 特許侵害しているとして訴えられただけだろう。 まだまだ一方的な主張の段階。 「特許侵害だとよ。」は風説の流布に当たるおそれがあるから注意。 断定は判決が出てからに汁。 よくあるアメリカ流のふっかけ・ゆすりと推測してみる。 うまく行けば和解金ふんだくれるもんな。
284 名前:デフォルトの名無しさん [2006/07/04(火) 21:10:50 ] 時給1000円でJava教えてくださるかたを募集します 場所 所沢(池袋・高田馬場から直通) i−want−to−study−java@hotmail.co.jp (アドレスは全角で書いてあるので半角に直してください) よろしくおねがいします
285 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 23:56:57 ] >>281 すでに「おい、そのころには既にEOFがあったわけだが。 そのEOFにすら先行技術があるんだが?」と冷静なツッコミが 入っとるよ。
286 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 05:13:30 ] BerkeleyDB Java Editionつかってます
287 名前:285 mailto:sage [2006/07/05(水) 09:03:31 ] アンカーミスった。 >>282 だった。
288 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:01:42 ] SimpleORM www.simpleorm.org/whitepaper.html whitepaperを眺めてみたらいい感じ。 クラスに定義したメタデータからテーブルを作ったりできるらしい。 新規開発にしか向かないかな?
289 名前:デフォルトの名無しさん [2006/07/17(月) 21:22:59 ] 教える対象は超初心者です。 専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です
290 名前:284 [2006/07/17(月) 21:28:22 ] 教える対象は超初心者です。 専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です
291 名前:284 mailto:i-want-to-study-java@hotmail.co.jp [2006/07/17(月) 21:46:20 ] いきなり缶詰ー>架空請求スパムの送信
292 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 01:36:11 ] 亜米利加の特許は先発明制だから、いくらでも先行特許あるよ。
293 名前:デフォルトの名無しさん [2006/07/18(火) 03:38:48 ] >>290 = >>291 自分でマルチして、自分で突っ込んでる
294 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 18:28:56 ] HibernateのHQLで select sum(*) の返り値を IntegerじゃなくてLongで取得したいのですが、いったいどうすれば…
295 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:19:24 ] >>293 IDも出ない板でよく言うよ
296 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 01:07:07 ] >>294 ttp://opensource.atlassian.com/projects/hibernate/browse/HHH-1538 3.2での対応になる
297 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 02:32:50 ] >>296 ありがとうございます 丸一日、試行錯誤してしまいましたが 3.2.CR2入れることにします…
298 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 09:36:29 ] 知らぬ間にこんなの追加されていた。 アノテーションにSQLを書くみたいだが。 ttp://download.java.net/jdk6/docs/api/java/sql/DataSet.html
299 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 11:01:44 ] BeehiveのJDBC Controlみたいな感じか。
300 名前:デフォルトの名無しさん [2006/07/23(日) 02:09:26 ] 俺も同じようなコンセプトの Object/SQL mapper を作っているのだけれど、標準に搭載されるようじゃ用無しだなこりゃ。アハハ こういうのなんだけどさ。 @SQL(value = "SELECT * FROM dept", bean = Dept.class) public abstract List<Dept> readAll(); @SQL(value = { "UPDATE emp SET salary = salary - {#arg[2]} WHERE id = {#arg[0].id}", "UPDATE emp SET salary = salary + {#arg[2]} WHERE id = {#arg[1].id}", }, type = TYPE.UPDATE ) public abstract void moveSalary(Emp from, Emp to, int price); 完成したら公開しようと思っていたのだけれど、微調整したら公開しちゃおう。エヘヘ
301 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 09:05:28 ] >>300 標準のは、CachedRowSetを使っていて、CachedRowSetはJDBCドライバの対応が 必要だから、存在価値としてないわけじゃないと思うけどね。 しかし、どうせなら誰か.NETのDataSetをそのまま実装して欲しいな。 NinjaVAが実装しているけど、DataSetのソースが5000ステップくらいあるのと 微妙に違うので、いまいち使いづらい。
302 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 23:40:17 ] >>300 公開期待してます。
303 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 00:40:27 ] Hibernate Annotationで質問があります。 簡単なサンプルを作成して実行してみたところ以下のようなエラーが出ました。 Exception in thread "main" org.hibernate.MappingException: Unknown entity: sample.Employee そこでhibernate.cfg.xmlから<mapping package="sample"/>と<mapping class="sample.Employee"/> のタグを削除してnew AnnotationConfiguration().configure().addClass(Employee.class)と したところ問題なく実行できました。 この場合どこが悪くて最初の方法で実行できなかったのでしょうか 使用したライブラリのバージョンは下のやつです。 hibernate-3.2 hibernate-annotations-3.2.0.CR1
304 名前:300 [2006/07/28(金) 01:33:19 ] とりあえずサンプルをちゃんと動くようにして、上げました。 BSD License です。 sourceforge.jp/projects/crudfactory/ すいません、ドキュメントが一切ないです。サンプルのソースを見て下さい。 ognlとcglibが必要です。 こちらでは以下のバージョンで動かしています。他で動くかはわからないです。 サンプルを動かすには hsqldb が必要です。1.8.0 を使っています。 cglib-nodep-2.1_3.jar ognl-2.6.7.jar まだ無い機能、やってないこと ログを取る機能 しっかりしたエラー処理 HSQLDB以外での動作確認 ドキュメントを書く もっとしっかりしたサンプルを書く ソース内のコメント SQLの中の {#arg[0]} の部分。ここの {} の中に ognl が記述できます。methodの引数が arg という配列に入ってます。
305 名前:300 [2006/07/28(金) 01:43:02 ] 補足事項 hsqldbで CREATE TABLE dept ( id INTEGER NOT NULL IDENTITY, name VARCHAR NOT NULL, PRIMARY KEY(id) ); としていて、 INSERT INTO dept (name) VALUES ('name'); としたら、id列に値が自動で入ります。 この時id列に入った値を、取り出してbeanにセットしようとしています。 id列に入った値を取り出す方法が、RDBMSによってマチマチ?なようです。 で、とりあえず、SQLアノテーションのtypeというパラメータで使い分けるようにして、 INSERTした直後にCALL IDENTITY()とやって、その値をセットする方法を、CREATE_IDENTITY PreparedStatementでINSERTしたあと、PreparedStatement#getGeneratedKeysする方法を、CREATE_GENERATE INSERTしっぱなしでbeanに値を入れるのを放棄する方法を、CREATE としてますので、使う人は使いわけて下さい。 IDENTITYを設定した列が2コあったらどうなるんだ?とか、まとまり切っていませんので。
306 名前:300 mailto:sage [2006/07/28(金) 01:44:30 ] 始めてオープンソースでソフトを公開しました。 ドキドキしています。
307 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 01:54:41 ] 早速パクって儲けさせていただきました。無料で公開してくれてありがとう。
308 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 08:15:21 ] >>304 乙! と思って、早速いろんなDBで動作確認…と思ったら、 リリース物件もソースコードリポジトリも空っぽですよ?
309 名前:300 mailto:sage [2006/07/28(金) 08:23:51 ] 俺のアカウントからなら見られるのに…… 俺sf.jpの使い方わかってないぽいので、しばしお待ちを…… スレ汚してすいません。
310 名前:デフォルトの名無しさん [2006/07/28(金) 09:41:06 ] >>300 頑張れ。君に期待している。
311 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 00:47:50 ] >>300 私も期待しています。 頑張ってください。
312 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 01:58:50 ] >>308 DL出来るようになってるみたいだね
313 名前:デフォルトの名無しさん mailto:sage [2006/07/30(日) 04:53:44 ] sfはリリースしてから実際にDLできるまでにラグがあるらしい
314 名前:ストーカー [2006/08/03(木) 01:49:49 ] crudfactory.sourceforge.jp/tutorial.html こんなんできてるYO!
315 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 11:29:37 ] メモリに入りきらないぐらいの巨大なテーブルをSELECTして、一件ずつ処理したいと思っています。 Hibernateを使おうかと考えていますが、ネットの入門を見ている限りSELECTした結果を一気に取得しているようです。 全件一気にオブジェクト化するとメモリが足りなさそうなのですが、こういう用途はJDBC使って1件ずつ取り出した方が良いんでしょうか?
316 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 11:56:03 ] 1件ごとにSELECTすると効率が悪いから 何十件かまとめてSELECTするよろし。 それにそもそも、巨大なテーブルを全部変更するなら ストアドプロシージャのほうが圧倒的に効率がいい。
317 名前:315 mailto:sage [2006/08/03(木) 12:48:31 ] 書き方が悪かったですね、申し訳ないです。 SELECT * FROM TABLEして全件取得して、ResultSet.next()で1件ずつ処理したいって事なんです。 Hibernateの入門ページ見てると、検索結果がListで一気に戻ってきているようだったので。 つまり聞きたいのは、検索結果全件を一気にオブジェクト化するとメモリが足りないので、 検索結果全件の中から1件ずつオブジェクト化して処理できないかな?って事です。 ListのgetやIteratorのnext時にオブジェクト化されていたら問題なさそうなんですか。 って書いてたら聞くより本なり読んでちゃんと理解してから判断した方がいい気がしてきた・・・。
318 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 13:24:03 ] >>713 素のJDBCだと 一方向に読み込み専用 で取得すると 一気には取ってこないみたいだね
319 名前:315 mailto:sage [2006/08/03(木) 16:36:42 ] >>318 それをO/RマッピングでやってみたいんですがやっぱJDBC使わないとダメなんでしょうかね。 ふむむ、できないとしたら分割してSELECTするなり工夫が必要かぁ・・・。
320 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 16:52:08 ] >>315 Hibernate使ったこと無いけど、lazy initializationを有効にすると 取得したコレクションからオブジェクトを取得するときまで インスタンス化を遅らせることができるそうだ。 ttp://www.hibernate.org/hib_docs/reference/ja/html/collections.html#collections-lazy つうかドキュメント読め。
321 名前:315 mailto:sage [2006/08/03(木) 17:14:37 ] >>320 おお、良い感じですね。 問題はいらなくなった読み込み後のオブジェクトがちゃんとゴミ掃除されるかどうかだけど・・・とりあえずいろいろ読んでみます。 dクス!!
322 名前:デフォルトの名無しさん mailto:sage [2006/08/07(月) 18:33:15 ] Beanて、テーブル毎に一つ作るものでしょうか? INSERT目的なら全カラム必要になるだろうけど、 SELECT目的なら一部のカラムのみで十分なケースってあると思うんです。 例: BOOKというテーブルはID、名前、著者名、カテゴリ情報、概要等、 本に関する情報を多数持っているが、 検索結果に表示するのは名前だけで十分、という場合。 この時ID、名前以外の情報まで持ってくるのは非効率な気がするのですが、 このSELECT目的に別にBeanクラスを定義するというのはアリでしょうか。 class Book { 全カラム } class BookForSearchResult { ID, 名前 } それとも、この程度の効率はO/Rマッピングを使用する以上、 気にしない方がいいんでしょうか。
323 名前:デフォルトの名無しさん mailto:sage [2006/08/07(月) 19:15:38 ] >>322 どうしても気になるのなら、IDと名前だけのビューを作って、 そのビューとBeanをマッピングしたらどうでしょう?
324 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 01:42:02 ] hibernate使ってたけどいろいろ面倒くさくなってきたのでCommonsDbUtilsに戻してしまった。 なんかすがすがしい気分になった。
325 名前:322 mailto:sage [2006/08/08(火) 11:09:26 ] >>323 なるほど、ビューを対象にするなら違和感ないですね。 カラムを限定するようなケースが発生するのは大概検索画面なので、 わざわざビューを作る、というのもアリが気がします。 ありがとうございます。
326 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 19:12:24 ] OJB 1.0.4を利用しようと思ってソースとバイナリを取ってきて 動かそうとしているのですが、junit test suiteがFailureを出します。 WinXP (SP1) JDK 1.5.0_06 lib等は、 antは1.6.5を別途導入。junit.jarはojb1.0.4のをcopy DBはデフォルトのhsqldb (入手したママ) でるFailure (1件のみ) testReportPathExpressionForExtent2 check size expected:<2> but was:<0> (その他実行結果のファイルにはNOT_EXISTテーブルがないとかもでている) OJBのドキュメント等やMLも読んだのですが、junit testについては (hsqldb)についてはそのまま動くとのことで、どう修正すれば 動かせるのかどうかわからなくて困っています。 ここでいいのかどうかわからないのですが、よろしくお願いします。
327 名前:デフォルトの名無しさん mailto:sage [2006/08/09(水) 00:20:58 ] まだ見てるかわからんが、HibernateならScrollableResultsがある。 ResultSetと同じようなカーソル的な使い方ができるので、 適度にevict()しながら処理すればいいと思われ。
328 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:09:46 ] 正直O/Rまっぱーの利点がわからん。 簡単な表結合ならSQL書いちゃったほうが早いし 難しい表結合はO/Rまっぱーじゃ結局無理だし。 なにがいいのか俺にもわかるように説明してくれ。 DTO自動で作るだけならエクセルマクロで十分だし。
329 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:22:18 ] そのエクセルマクロ生成コードにむかついた人が張り切ってしまって できたのがO/Rマッパー。 むかつかない人はそのままでいいよ。
330 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:29:30 ] >簡単な表結合ならSQL書いちゃったほうが早いし ORMの利点は、「SQLを書かなくていい」ではない。 >DTO自動で作るだけならエクセルマクロで十分だし。 それを「車輪の再発明」と言う。 ダメエンジニアが行う愚行の一つ。
331 名前:328 mailto:sage [2006/08/17(木) 18:32:31 ] >>330 で、結局利点はなんなのでしょうか(^^;