[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 02/24 23:25 / Filesize : 149 KB / Number-of Response : 521
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

ってあるから、あいばってぃす?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<149KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef