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 以降
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 で、結局利点はなんなのでしょうか(^^;
332 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:35:56 ] >>329 個人の趣味で使うものってことでしょうか?? 仕事で使うもんじゃないってことでFA?
333 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:42:12 ] >>331 オブジェクトとSQLのマッピング作業をフレームワークがやってくれる点。
334 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:43:03 ] >>329 のレスから>>332 のような結論が出る時点でDQNエンジニア確定だな。
335 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:46:33 ] ぶっちゃけ俺DQNエンジニアだとおもう。 まっぱーの利点とか理解できないし。 だから教えてくださいお願いします。 >>333 マッピングってDTOつくって、ResultSetから値を取り出してDTOに入れていくってことですか? ただそれだけですか? そこでそんなにバグが出たり工数がかかったりしてるんですか?
336 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 19:01:57 ] >>335 検索だけじゃなくて、挿入・更新のときのマッピングもね。 DQNかも知れないエンジニアを大量に使わざるを得ないプロジェクトで、 テーブル数が数十個ある場合で、カラムの追加変更などがある場合でも フレームワークにやらせるよりも手作業の方が早くて確実なら使う必要はないだろう。
337 名前:328 mailto:sage [2006/08/17(木) 19:10:21 ] それだけしか利点がないならやっぱ内の会社にはいらないのかもしれない。。 ほんとにそこでみんな困ってるの??? そのあたりって仮にまちがえてもテスト段階でバグ発見しやすい部分だと思うし そもそもDTOに入れたり出したりするのなんてそんなに大変な作業でも ないとおもうんですが・・・。 うちのシステムもテーブル150ぐらいあるし、 カラムの追加変更もときどきあるけど 一度に追加変更されるのって2、3テーブルぐらいのものだし それだけのためにxml書いたりといった面倒な作業が 工数的、費用的ににペイするのかしら?? あたらしいもの好きな人たちが趣味でやってる領域なのでは? 実際に業務に使ってるひといるの???
338 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 19:25:27 ] XMLファイルを手書きしてたらメリットは感じないたろうね。 トータルの記述量はあまり減らないし、かえって面倒と感じるだろう。 そこは自動生成するところだよ。
339 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 19:32:14 ] ORM=XML設定ファイル必須というわけでもない。 S2DAOや、Hibernate Annotation、EJB3はXMLによるマッピング不要だ。
340 名前:328 mailto:sage [2006/08/17(木) 19:39:49 ] XMLをテーブル定義から自動作成する工数と DTOなど自分でコーディングする工数 システム開発全体にかかる工数から比較したら これらが締めるのは微々たるものでは?
341 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 19:51:09 ] >XMLをテーブル定義から自動作成する工数と >DTOなど自分でコーディングする工数 ちがう。 テーブル定義からXMLとDTOとを自動生成する工数と DTOを自分でコーディングおよびSQLとDTOの値の受け渡し処理の コードを書く工数とその部分をテストする工数の合計だ。 後者の方が早くて確実なら使う必要はない。
342 名前:328 mailto:sage [2006/08/17(木) 19:54:00 ] その2つだけをくらべたら後者のほうが遅くて不確実なんですが OR mapperに潜んでいるバグのリスクや、 各OR mapperの使い方を覚える工数を考えたら やっぱ使わないって判断かなあ。 そもそもわざわざ導入したところで削減できる工数が少なすぎるような気が。 あんだけ雑誌やネットで騒がれておきながら メリットってこんだけなの? なんかほかにメリットないのかしら・・。
343 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 19:54:11 ] そう感じてて、それで本当にいい! ノープロブレム! って思うなら、それでいいじゃねえか。 俺はDTOを自分で書くなんて冗談じゃねえが。 Hibernate Annotationでハッピーライフ。
344 名前:328 mailto:sage [2006/08/17(木) 19:57:38 ] いや、どう感じるかは問題ではなく 客観的な指標から判断して どちらが生産性の向上につながるのかが知りたい。 なんでこれだけのものにみんな大騒ぎしてるんだろう? なんかあるのでは?って思ってしまう。
345 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 20:02:51 ] 生産性にまともな測定方法なんてネーヨ むかつくやり方を続けると、精神衛生に悪くて生産性が下がる。 それだけ。
346 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 20:35:55 ] >OR mapperに潜んでいるバグのリスク おまいのところがGavin Kingより優秀な開発者を抱えてるならリスクとなり得るなw
347 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 20:47:21 ] >>345 それは真理だな。 >>344 なんにもないから安心しろ。 頑張って車輪を発明し続けてくれ。
348 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 21:04:21 ] >>346 マジレスすると、Kingよりも優秀な奴が一人いてもダメだと思う。 HibernateやS2DAOがどれだけの人に動作検証されているのかを考えると、 それ以上の動作検証ができて、はじめて 「OR mapperに潜んでいるバグのリスク」が自作コードより大きくなると言える。
349 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 21:37:15 ] >>348 自作コードの方が普通は仕様が小さいから、 同程度の品質を確保するのにそこまでの動作検証は要らないけどね。
350 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 22:30:32 ] ORマッパには、いままでの長い期間で発見されたパフォーマンス 改善手法がデフォルトで組み込まれている。 ORマッパの大部分は関連テーブルのレコードを自動的に取得 できる。 百人がよってたかってデバッグしたコードと、どっかの中小企業が 自分たちのしょぼいプロジェクト用に作って二人か三人でデバッグ したコードでは、前者の方が信頼性が高い。 ただし1テーブルのデータちょっと取ってくるだけ、しかもテーブル間 リレーションもほとんどない、毎回SQLをコンパイルさせる程度の 負荷などまったく気にしない、とかなら別に使う必要はなし。
351 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 22:36:31 ] 大量のデータをinsertするような、バッチ的処理には向いてないね。 あくまで、オンライントランザクション処理を簡易化するためのフレームワーク。 万能ではない。
352 名前:デフォルトの名無しさん [2006/08/17(木) 23:09:32 ] まずはテーブルの構造からO/Rマッパー的に作る必要がある。 それができないプロジェクトは、リプレースするか、捨てるか。どっちかしかない。
353 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:54:27 ] >>328 とりあえず何か動かしてみたりはしたの? Hibernateなら、ツール使えばスキーマ読み込んで勝手にクラス作成までやってくれるから 一度適当に使って試してみたら? 結局ツール適用のメリット有無なんて、対象システムや開発環境との相性だからな
354 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 01:31:01 ] >>176 忘れた頃に禿同 オレもエンティティにビジネスロジックを書きたくなってしまう。 GRASPじゃないけど、OO的に考えるなら、データに近いところへ メソッドを寄せ集めておきたいんだよな・・・ 自動生成されたエンティティをサブクラスするのはちとキモイしねぇ
355 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 07:19:44 ] >>176 ,354 >自動生成されたエンティティをサブクラスする ちょっと意味不明だけど 任意のクラスを継承したエンティティを自動生成できるツールがほとんどだよ
356 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 07:48:13 ] >>355 クラス継承によるロジック共通化をフレームワーク単位で行うと、クラスの拡張性が著しく損なわれるので 最近は避けられる傾向にある 最近DIコンテナを使った開発で多用されているのが、委譲による疎結合。 その場合はステートレスなロジッククラスが利用される。 これとドメインモデルとの相性がイマイチなのがORマッピング利用時の問題 ORマッパー自体がDIをサポートして、ロジックを委譲するオブジェクトを注入してEntityを作成することが出来れば ドメインモデルでも疎結合でロジックを構築できるのでは?・・・という話
357 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 08:00:02 ] >>356 >>354 からそこまで読み取れたらネ申だな。
358 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 08:42:51 ] >>176 を先に読めよw
359 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 18:56:37 ] iBATIS2.2.0(β)
360 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 00:12:40 ] あれ? iBATIS2.2.0って、ストアドプロシージャと Beanとのマッピング出来るようになったん?
361 名前:デフォルトの名無しさん [2006/09/05(火) 02:43:56 ] ついに1000体突破かよ アイロボットみたいだな 株ロボもいつか夢を見るようになるのかなぁ
362 名前:デフォルトの名無しさん mailto:sage [2006/09/06(水) 11:11:38 ] 貼っとく [ThinkIT] 第7回:それぞれのメリット/デメリット (1/3) ttp://www.thinkit.co.jp/free/article/0606/13/7/
363 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 15:08:40 ] 質問なんですが Hibernateでsessionキャッシュ上の永続オブジェクトに対して オブジェクト単位での変更チェックは出来ないんでしょうか? bool Session#isDirty(Object o, ...)みたいなものがあればいいのですが...
364 名前:デフォルトの名無しさん mailto:age [2006/09/26(火) 00:45:24 ] キましたね。iBATIS。 ストアドプロシージャとBeanのマッピングOK。 サンプル書いて確認とれました。 sqlMap.queryForObject(query, map); ArrayList list = (ArrayList)map.get("out"); for(int i=0; i<list.size(); i++){ Bean bean = (Bean)list.get(i); bean.getId();} SpringFrameworkと連携するときは使えないかもしれないけどね。 とりあえず、Map(HashMap)->ArrayList->Beanの順に格納されているので、 1コ1コ取り出さないといけないのがメンドイ。 つーか instanceofで確認取らせんな!( ゚Д゚)ゴルァ!!
365 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 01:16:45 ] あいばてぃす? あいべいてぃす?
366 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 01:26:28 ] いーばてぃす
367 名前:デフォルトの名無しさん [2006/09/26(火) 01:36:02 ] ibatis.apache.org/background.html ここ読むと >We pronounce it: eye-BAT-iss ってあるから、あいばってぃす?