トップページtech
1001コメント316KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
前スレ 「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]
  ttp://www.martinfowler.com/eaaCatalog/

詳細は、>>2以降に。
0002デフォルトの名無しさんNGNG
●O/R-Mapping Framework各種
 [HYBERNATE]
  ttp://www.hibernate.org/

 [Cayenne]
  ttp://objectstyle.org/cayenne/

 [Torque]
  ttp://db.apache.org/torque/

 [CasterJDO]
  ttp://www.castor.org/jdo.html

 [ObJectRelationalBridge (OJB)]
  ttp://www.terra-intl.com/jakarta/ojb/
 
 [iBATIS - SQL Maps]
  ttp://www.ibatis.com/common/sqlmaps2.html
 
 [Java Ultra-Lite Persistence (JULP)]
  ttp://julp.sourceforge.net/index.html
 
 [Jakarta Commons DbUtils](O/R-Mappingというよりは、O/R-Bridge)
  ttp://jakarta.apache.org/commons/dbutils/
0003デフォルトの名無しさんNGNG
●コネクション・プーリング・フレームワーク
 [Jakarta Commons DBCP]
  ttp://jakarta.apache.org/commons/dbcp/

 [c3p0 : JDBC DataSources/Resource Pools]
  ttp://sourceforge.net/projects/c3p0

 [XAPool : Pool object for JDBC connections and XA connections]
  ttp://xapool.experlog.com/



●JDBCに関する情報源
 [JDBCの基礎]
  ttp://www5b.biglobe.ne.jp/~hrk117/personal/pc/jdbc/

 [JDBC API解説]
  ttp://akimoto-jp.com/java/Database/Jdbc-api/index.html
0004デフォルトの名無しさんNGNG
●参考サイトや情報源
--- 比較資料など ----
 [JDBC, Hibernate, Torque, DbUtilのベンチマーク比較]
  ttp://d.hatena.ne.jp/masanobuimai/20031216#p2

---- Hibernate関連情報 ----
 [HIBERNATE - Relational Persistence for Idiomatic Java 【日本語訳版]
  ttp://www.ozacc.com/library/java/hibernate/doc/html/index.html
 
 [Hibernate User FAQ 日本語訳版]
  ttp://nekop.programmers.jp/wiki/Hibernate/?HibernateUsersFAQ
 
 [@IT - Hibernateで理解するO/Rマッピング1,2]
  ttp://www.atmarkit.co.jp/fjava/rensai3/ormap01/ormap01.html
  ttp://www.atmarkit.co.jp/fjava/rensai3/ormap02/ormap02.html

 [JAVA開発メモ - Hibernate]
  ttp://www.moriwaki.net/wiki/index.php?%5B%5BHibernate%5D%5D
 
 [はてなダイアリー - R2D2氏の日記]
  ttp://d.hatena.ne.jp/R2D2/searchdiary?word=%2a%5bHibernate%5d
 
 [はてなダイアリー - koichik氏のひとりごと - Hibernate入門記]
  ttp://d.hatena.ne.jp/koichik/searchdiary?word=%2a%5bHibernate%5d
 
 [Hibernateメモ]
  ttp://muimi.com/j/hibernate/
 
 [Hibernateを試してみる]
  ttp://docs.positrail.org/pukiwiki.php?Document%2FHibernate
0005デフォルトの名無しさんNGNG
続き:

 [Hibernateのマッピング情報を生成するのに便利なツール]
  - XDoclet
    Java Beanからマッピングファイルを生成
    ttp://xdoclet.sourceforge.net/xdoclet/index.html

  - Hibernate Synchronizer
    Eclipse用プラグイン。DBのテーブル構造からマッピングファイルを生成
    ttp://www.binamics.com/hibernatesync/
  
  - JFaceDbc
    Eclipse用プラグイン。DBのテーブル構造からマッピングファイルを生成。
    ttp://www.pratocity.com/index.jsp?mod=/jface/jfacedbc.jsp
    (新バージョンから有償になった?)
  
  - Exadel ORM Studio Hibernate Edition
    Hibernateにも使える、統合ORM操作環境(有償)
    ttp://www.exadel.com/products_ORMstudio.htm
  
  - Hibernateと親和性のある、国産IoCコンテナ"Seasar"
    ttp://www.seasar.org/
    ttp://seasarproject.g.hatena.ne.jp/
    ttp://itpro.nikkeibp.co.jp/free/JAV/J2EE/20040412/1/
    


---- Cayenne関連情報 ----
 [Cayenneの紹介と、基本的な使い方(英語)]
  ttp://www.theserverside.com/articles/article.tss?l=Cayenne
0006デフォルトの名無しさんNGNG
続き:

---- Torque関連情報 ----
 [Torqueを動かしてみる]
  ttp://homepage1.nifty.com/kingyoshi/computer/jakarta/torque.htm
 
 [Torqueチュートリアル]
  ttp://www.jajakarta.org/turbine/jp/turbine/torque/tutorial.html

---- JDO関連情報 ----
 [Castorを使用したオブジェクト・リレーショナル・データ・バインディングの基本を学ぶ]
  ttp://www-6.ibm.com/jp/developerworks/java/021025/j_j-castor.html
 
 [CastorでオブジェクトをRDBにマッピング]
  ttp://www.atmarkit.co.jp/fxml/rensai2/xmltool06/01.html

---- DbUtils関連情報 ----
 [DbUtilsメモ]
  ttp://www02.so-net.ne.jp/~kikuta/dbu/index.html

---- コネクションプーリング関連情報 ----
 [Jakarta Commons DBCPを使ってみよう]
  ttp://taka-2.com/jclass/DBCP/

 [DBCP利用法 from "『カモン!Commons!』 Jakarta Commonsを使ってスキルアップ" (2002/09)]
  ttp://www.mobster.jp/wiki/index.jsp?pid=Commons#i10
0007デフォルトの名無しさんNGNG
てなわけで、立てますた。
あとは補足ヨロ

ノシ
0008デフォルトの名無しさんNGNG
こんだけあると、スレで話すことはないな。
0009デフォルトの名無しさんNGNG
俺用hibernateメモ。

- Criteriaクラスを使うよりも、HQL使ったほうが高速。
 (Criteriaは、内部解析の後に、SQLへ変換される)

- hibernate.propertiesは、Hibernateが初期化される最初の1回のみに読み込まれ、
 hibernate.cfg.xmlは、SessionFactoryがビルドされる毎に読み込まれる。
 DBへの接続情報を、hibernate.cfg.xmlに書くexampleが多いが、
 経験上、DBとの接続情報などはhibernate.propertiesに全部移し、
 hibernate.cfg.xmlにはマッピング情報のみを記述したほうがいいかも。
 MySQLでは問題ないのだが、DB2に接続する際に、外部キー制約の処理中みたいな
 ログを吐いたところでしばらくwaitしたりする(Hibernate2.1.3と、DB2v8.1 on AIXで確認)。
0010デフォルトの名無しさんNGNG
てんぷれでお腹いっぱいなりました。ご馳走様。
0011デフォルトの名無しさんNGNG
Cayenne公式サイトの User Guide と Modeler Guide

http://www.objectstyle.org/cayenne/userguide/index.html
http://www.objectstyle.org/cayenne/modelerguide/index.html
0012デフォルトの名無しさんNGNG
Hibernate in Actionが10日に発売予定みたいだね。
英語がわからない俺には手を出せないが、挑戦してみるのもいいかなぁ。
0013デフォルトの名無しさんNGNG
O/Rマッパー使ってると、JDBCドライバとRDB間で、どのようなやりとりが
されてるのか知りたいときがある。そのためのツール。

[jdbcdebugger]
ttp://jdbcdebugger.sourceforge.jp/

[P6Spy]
ttp://www.p6spy.com/
0014デフォルトの名無しさんNGNG
HibernateとSpringを使ってトランザクショナル・パーシスタンス・レイヤーを開発する

ttp://www-6.ibm.com/jp/developerworks/java/040604/j_j-hibern.html
0015デフォルトの名無しさんNGNG
Hibenate + XDoclet + DbUnitの組み合わせをテスト
したいのですが、ディレクトリの構成で悩んでおります。
取りあえず以下の様にしたのですが、これがベストなのか
どうかご指摘等お願いします。

ちなみに出来るだけ単純にしたいのでコンソールアプリで
作成しています。

root
│  build.xml

├─config ←コンフィグファイル群 java/classesへコピーされる
│  ├─conf ←手動で作成
│  │      hibernate.cfg.xml
│  │
│  └─xdoclet ←XDocletで生成
│          model.hbm.xml
├─java
│  ├─classes ←*.class
│  ├─doc ←javadoc
│  ├─jar ←*.jar java/classesから生成
│  └─src ←*.java
├─resource
│  └─lib ←必要なjarファイル群(Hibenate等)
└─test
    ├─classes ←テスト用の*.class
    ├─data ←テスト用のデータ
    ├─report ←JUnitの結果レポート
    ├─src ←テスト用の*.java
    └─xmlout ←JUnitの結果
0016デフォルトの名無しさんNGNG
>>15
参考になるかどうかわからんが、
ココにHibernate+XDocletの解説とサンプルコードがあった。
ttp://www.commentout.com/people/takai/memos/hibernate_xdoclet/
001715NGNG
>>16
そこのサンプルはMavenを使ってるようですね。

実は15の構成だとbuild.xmlがかなり複雑になってしまってて……。
mavenのゴールを調べてみると「xdoclet:hibernatedoclet」
「hibernate:init」「hibernate:schema-export」
などがありますね。
これからmavenを少し勉強してみます。

ありがとうございました。
0018デフォルトの名無しさんNGNG
「XAPoolは負荷をかけると死にます」
ttp://nekop.programmers.jp/diary/?date=20040606#p01

DBCPとHSQLDBのテストデータ使って、小さなテストコード書いてみたけど、
プーリング未使用時よりも30〜40%くらい速くなるのかな。
0019デフォルトの名無しさんNGNG
Hibernate MulitpleTableGenerator
http://www.nighttale.net/OpenSource/HibernateMulitpleTableGen.html
0020デフォルトの名無しさんNGNG
Jakarta Commons DBCP 1.2 リリースage
0021デフォルトの名無しさんNGNG
いいスレなのに盛り上がらないね。
0022デフォルトの名無しさんNGNG
>>21
大概語られてるからね
0023デフォルトの名無しさんNGNG
Hibernateのボトムアップ型開発の資料がないのですが。。。(;´Д`)

Middlegenとか見つけたんですがこれもまた資料が。。。(逝

だれか詳細わかるかた教えてください。。。
0024デフォルトの名無しさんNGNG
Sun JDOは無視ですか、そうですか。
0025デフォルトの名無しさんNGNG
まあね。
0026デフォルトの名無しさんNGNG
今だとHibernate一本だよね。
0027デフォルトの名無しさんNGNG
>>23
Hibernate + Middlegen + Antを使用したbuild.xmlの例
ttp://www.boundless-ocean.ne.jp/archives/000102.php

MiddlegenのAntタスクの仕様(英語)
ttp://boss.bekk.no/boss/middlegen/ant/index.html

英語の資料って読むのに時間がかかるので正直ツライ。
002823NGNG
>>27
(-人-)アリガタヤアリガタヤ
後者の方は前に見つけて英語がんばってみたが10分で挫折_| ̄|○

逝ってきまつ λ....
0029デフォルトの名無しさんNGNG
>>27のサイトを参考にmiddlegenを使ってみた。取りあえずmysqlでうまくhbmとjavaを生成できたけど……。
jarファイルの依存関係が大変なので、おそらくmiddlegenタスクに辿り着くまでに挫折する人が出てきそうだね。
ttp://boss.bekk.no/boss/middlegen/dependencies.html
んで、せっかくなので、成功したときのtaskdefを晒してみる。

<taskdef name="middlegen" classname="middlegen.MiddlegenTask">
  <classpath>
    <fileset dir="E:/java/middlegen-2.0-vo">
      <include name="middlegen-2.0-vo.jar" />
      <include name="middlegen-hibernate-plugin-2.0-vo.jar" />
      <include name="samples/lib/commons-collections-2.0.jar" />
      <include name="samples/lib/log4j.jar" />
      <include name="samples/lib/velocity-1.3.jar" />
    </fileset>
    <pathelement location="E:/java/mysql-connector-java-3.0.14/mysql-connector-java-3.0.14-production-bin.jar" />
  </classpath>
</taskdef>
<path id="hibernate.jars">
  <fileset  dir="E:/java/hibernate-2.1.4">
    <include name="hibernate2.jar" /><include name="lib/*.jar" />
  </fileset>
</path>
<taskdef name="hbm2java" classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask">
  <classpath>
    <path refid="hibernate.jars" />
    <fileset dir="E:/java/hibernate-extensions-2.1.2/tools">
      <include name="hibernate-tools.jar" /><include name="lib/*.jar" />
    </fileset>
  </classpath>
</taskdef>
0030デフォルトの名無しさんNGNG
PriDE 2.1.2リリースage
ttp://pride.sourceforge.net/
0031デフォルトの名無しさんNGNG
struts + hibernate + etcツールをeclipseプラグインで提供。生産性5倍超w
ttp://www.exglue.jp/


上記のサイトで紹介されているHibernateのチュートリアル。
*.xmlのタグが&lt&gtになってるんでIE以外では見るのは厳しい。
ttp://www.ndci.co.jp/tips/hibernate/hibernate.html


・・・・・・なんか、妙な気分になるのは気のせいでしょうか?
0032デフォルトの名無しさんNGNG
妙な気分だけど、ExadelとかもStruts用のツールを有償販売してたりするから、
まぁ別にいいんでないかと。
フリーでこういうの出ないかねぇ。

一番妙だと思うのは、「5倍」の根拠ですかなw
0033デフォルトの名無しさんNGNG
>>32
自分でstruts-config書いたら、自動生成の場合より5倍かかる、と。
0034デフォルトの名無しさんNGNG
確かに生産性5倍というのは眉唾ものだと思うが、

Hibernateを使用した製品を販売している、という国内のHibernateの導入実績に貢献してくれた
ことについては、素直に評価したい。(購入する気はさらさらないが)


「実績がない」という一言で、便利なツール類が導入出来なかった事が多々あるのもので。
0035デフォルトの名無しさんNGNG
>>32
Exadelはフリー版で充分だよ
0036デフォルトの名無しさんNGNG
まぁ、使う人次第だ

Struts自体が生産性低くしてるもんだから、
こういうプロダクトが出てくるんだろうね。

漏れはよいことだと思うよ。



しかし、漏れの真のおすすめは、普通にServlet/JSPで作る
これで何が不満なのか
0037デフォルトの名無しさんNGNG
Hibernateって、いわれてもなぁ・・・

覚えるほどの価値あるのかしら、成果あるのかしら


イテレータとハッシュマップじゃだめなの?
0038デフォルトの名無しさんNGNG
誰かHibernate in Action買った?
0039デフォルトの名無しさんNGNG
>>37
と思うならそれでいいと思われ。
0040デフォルトの名無しさんNGNG
>>39
だよな。
別にわざわざ説明する義理もないし。
0041デフォルトの名無しさんNGNG
そんなあなたに Tapestry + Cayenne ですよ。
0042デフォルトの名無しさんNGNG
きゃいーん?
かいーの?かんぺい?
0043デフォルトの名無しさんNGNG
>>42にマジレスしていい?
0044デフォルトの名無しさんNGNG
キャシャーンだろ!
0045デフォルトの名無しさんNGNG
シャキーンだと思うよ。(`・ω・´)
0046デフォルトの名無しさんNGNG
ショボーンかも(´・ω・`)
0047デフォルトの名無しさんNGNG
Hibernate について、わりとまとめてみた罠。入門用(自分の)。

http://hirohiro.homeip.net/essay/2004/06/20040623.htm

Hibernate これからという人にはオススメかも。
0048デフォルトの名無しさんNGNG
素晴らしいです。
0049デフォルトの名無しさんNGNG
期待せずに見たけど、けっこうよかった。
0050デフォルトの名無しさんNGNG
30 June 2004 - Apache OJB (Object/Relational Bridge) 1.0 Released

使っている人いない?
0051デフォルトの名無しさんNGNG
>>47
ネ申
こういう資料を求めていた。・゜(ノ∀`)゜・。
0052デフォルトの名無しさんNGNG
>47
おおおおお!まさに神!さっそく印刷して使わせてもらってます。
0053デフォルトの名無しさんNGNG
>>47

Hibernateは何なのかとしっかりかいてあってよい

おかげで、漏れは絶対このアプローチのフレームワーク、ライブラリを使うまいと決心することができた
0054デフォルトの名無しさんNGNG
単にデータ構造表すだけなのにソースコード自動生成って、やっぱりくだらないと思うよ。
十年以上も昔にもっとスマートなアプローチ、連想配列や配列の配列ってのがあるしさ。
0055デフォルトの名無しさんNGNG
commonsでいいじゃn
0056デフォルトの名無しさんNGNG
>>53-55
と思うのなら、ORマッピングが必要なものを作ってないだけなので、使わなければいい。
0057デフォルトの名無しさんNGNG
ORマッピングが必要なものなんてあるのだろうか。
必要とまで言わなくとも、開発効率が上がるならよいと思うが
問題なのは自動生成したコードのメンテナンスが結局めんどくさいってこと。

Hibernateの作者がこのことに気づいちゃったらやる気なくなるだろうし、
もうHibernateは誰も面倒見ないし、このソフトを土台にしたソフトウェア自体危うくなる。
0058デフォルトの名無しさんNGNG
>>57
変更箇所の集中には価値がある。
0059デフォルトの名無しさんNGNG
>>57

ソースコードの自動生成なんてやってる限り、集中してないだろ。

それに過度の集中ならそれは機能間の依存性の高さに繋がって
変更にかかるコストが高くなる。
0060デフォルトの名無しさんNGNG
自動生成されたコードって人間の感性が反映されてなくて激しく読みづらい
0061デフォルトの名無しさんNGNG
>>59
> ソースコードの自動生成なんてやってる限り、集中してないだろ。

意味がわからん。
自動生成したコードに集中してるんじゃないの?

> それに過度の集中ならそれは機能間の依存性の高さに繋がって

相関がわからん。
たとえば、JDBCでは、DBシステムのバージョンアップで変更があったときでも、JDBCドライバだけに変更が集中する
つまり、この場合は過度に集中しても機能間の依存性の高さにつながってない。
どういう条件で、過度の集中が機能間の依存性の高さにつながるのか、説明きぼん

> 変更にかかるコストが高くなる。

変更作業の総量が少なくても、変更にかかわる人が増えると、変更のコストが高くなることもある。
0062デフォルトの名無しさんNGNG
>>61
> 自動生成したコードに集中してるんじゃないの?
そうだが、自動生成よりもっといい手があるならそれをしたほうがいい

> 相関がわからん。
相姦は特に無い
集中はいいといって本当になんでもかんでも集中させちゃう人が、実際にはいるので書いてみただけ
0063デフォルトの名無しさんNGNG
>>62
いい手があるならね。
自動生成したコードを機械的に変更するのがめんどくさくて、手近に女の子プログラマがいるなら、彼女にまかせればいい。
実によくやってくれる。
0064デフォルトの名無しさんNGNG
というか、>>62が普段どんな文章をかいているのかに興味がある。



相姦
0065デフォルトの名無しさんNGNG
なかなか誤変換できるもんじゃないな。
0066デフォルトの名無しさんNGNG
>>63
最初から自動生成せずハッシュマップでよかろうと
0067デフォルトの名無しさんNGNG
>>66
だから、DBUtilsでいいなら、そうすればいい。
ORマッピングで、OR変換を集中管理したいならORマッピングにすればいい。
別問題。
0068デフォルトの名無しさんNGNG
単純な参照だけなら、ORマッピングは必要ないな。
0069デフォルトの名無しさんNGNG
>>68
「複雑な」参照でもORマッピングは要らないんじゃないの?
すんごい長いSELECT文発行するようなやつ
0070デフォルトの名無しさんNGNG
単純にSQLの結果を出力するだけなら、ORマッピングは必要ないな
0071デフォルトの名無しさんNGNG
>>69は勘違いしていると思われ
0072デフォルトの名無しさんNGNG
ORマッピングが使えるか使えないかはこの際置いておいて、ひとつの事実を。

それなりの規模の仕事をしてて、それなりに技術力のある人は、ORマッピングがイイって言ってる。
0073デフォルトの名無しさんNGNG
ストアドじゃ駄目なんかな?
0074デフォルトの名無しさんNGNG
まあ、ORマッピングがいらないって人は別に使う必要もないよ。
オブジェクト指向の時も、「オブジェクト指向はいらね」と言う人はたくさんいたわけだし。
それで今でも食っていけてるわけだし。
0075デフォルトの名無しさんNGNG
SQL文のメンテにくらべたら
自動生成されるソースのメンテのほうが楽ってこと?
0076デフォルトの名無しさんNGNG
Hibernate in Action を邦訳してだしてくれよ
>クイープ
0077デフォルトの名無しさんNGNG
クイープはやめて〜
Struts in Actionの訳ひどかった・・・・・・・・・・・・
0078デフォルトの名無しさんNGNG
>>74

ORマッピングとオブジェクト指向と同列にすんなよ。
漏れはオブジェクト指向マンセーだが、ORマッピングには超ネガティブ。

ORマッピングって、何の振る舞いも持たないクラスを自動生成するってことでしょ。
これは本当に意味無い。それどころかメンテしづらくなって有害。
0079デフォルトの名無しさんNGNG
>>73
結局やりたいことはJavaストアドなんだよね。
0080デフォルトの名無しさんNGNG
>>78
だから、意味がないと思ったりメンテしづらくなる場合には使わなければいいだけの話。
0081デフォルトの名無しさんNGNG
>>68

そりゃ、何か振る舞いを持つオブジェクトをデータベースを参照して生成するってのは、
それが有効な場面は多いが、しかし、ソースコード自動生成ってことは、ロクな振る舞い
クラスがどんどん生成されるってことだろ。

これは勘違い野郎のウォナニー。
0082デフォルトの名無しさんNGNG
>>78
そうかな。
俺、自作するのめんどいから、つかえるもんならぜひ使いたいけど。
DBレイアウトそのままにマッピングできるclass群の自動生成とか、
それだけでも有効利用する方法が結構思いつく。

おぼえるのがめんどいから、やらないけど。

来週も鬼のような集計用SQLを書いて、それを逐一classに転送する処理作成の続き。
ER図からclassのレイアウトを起こす

classを作成する

集計用SQLを書く(テーブル結合、サマリなどの集計あり)

ResultSetから、値を取り出し、classに配置し、レコード数だけのListにする。
という処理。
なーんか自動化できるような出来ないような・・・。
0083デフォルトの名無しさんNGNG
>>75
SQL文は、分散する傾向がある。
それから、SQL文書いたときは、そのデータ型に従ったResultSet#get・・・メソッドを使って処理をする必要がある。
たとえば、開発中の場合、データベースのフィールド名やデータ型が変わることがゼロではない。
そのときに、SQL書いてResultSet#get・・・書いてる場所はすべて変更する必要がある。
ORマッピングで変換場所をまとめておけば、その部分だけを変更すればいい。
マッピングがXMLに記述されていれば、そのXMLを変更すればいい。
もちろん、完全にそれだけというわけにはいかないけど、ある程度変更場所を集中させることができる。
0084デフォルトの名無しさんNGNG
>>82
もしかして、大量のフィールドとアクセサメソッドしかないクラスを定義していたりするのかしら。

そんなコードもう見たくもない!
普通にMap使ってくれ。
0085デフォルトの名無しさんNGNG
>>83
フレームワークに頼らなくても(むしろ頼らないほうが)シンプルな設計にすることはできるよ。
0086デフォルトの名無しさんNGNG
>>84
だってMapだと型が・・・。
0087デフォルトの名無しさんNGNG
>>85
言うだけならただだよ。
どうシンプルにするんだよ。
0088デフォルトの名無しさんNGNG
>>87
普通にデータ取得する部分をリファクタリングして同じメソッドでやるようにすれば?
0089デフォルトの名無しさんNGNG
>>88
で、それを全部手作業でやる、と。
0090デフォルトの名無しさんNGNG
全部ってどういうことだ。データ取るメソッドが一箇所にまとまっていればそこを直すだけでよい。
0091デフォルトの名無しさんNGNG
>>83
1) DBの型変更→自動生成クラスの型変更
2) →自動生成クラスのユーザ修正

1)は自動化できても2)は必要でしょ
自動生成クラスの型が変わっちゃうんなら

HashMapマンセーの人は多分全部文字列にしてやってるんでしょう
事実それで問題ないことも多いし
型安全性が全く無い分、実はDBの修正に対して柔軟である
(コードの修正が必要ない)ことも多い気がするよ
HashMapを透過で扱ってる部分は全部パススルーになるし
カラムとかは設定ファイルで定義すればいいからね

0092デフォルトの名無しさんNGNG
>>91
だから、RDBの型が変わってもJava側の型が変わらない場合。

HashMapでどうの、って言ってるときは、結局そのデータ表示するだけって場合でしょ。
いろいろ処理する場合、型が必要になるわけで。
0093デフォルトの名無しさんNGNG
もし
自動生成のPOJOの類を透過で扱うためにBeanUtilとか使ってるんなら
まさにHashMapとかわらん気がするよ。
無駄にコードを太らせてるだけ。
0094デフォルトの名無しさんNGNG
> HashMapマンセーの人は多分全部文字列

なわけないだろ
キャストすれ
0095デフォルトの名無しさんNGNG
>>92
> いろいろ処理する場合、型が必要になるわけで

いやいらん場合も多いと思うよ
テキストタイプのSQLクライアントを想定してもらえば分かるように
SQLは基本的に全部テキストだ
Webのクエリに出てくるような情報も、意味論的には整数だったりするかも
知れないが、全部テキストだ
型情報が欲しければ、それさえも設定ファイルに含めてしまえばよい

パススルーではなく実際にロジック的な処理を行う項目・属性は
勿論それではすまないだろう。それはコードに現れざるを得ない。
だが、例えばWeb + DBで構築するような単純なアプリでは、
実際には透過で右から左に渡すだけのデータが意外に多い気がするよ。
0096デフォルトの名無しさんNGNG
>>94
キャストは透過にならないから嫌だなあ
カラム毎にくだらんキャストコード書くぐらいなら
まだラッパーPOJOがあるほうがマシじゃん
0097デフォルトの名無しさんNGNG
分かった
データベースを扱うプログラミングするときは明示的に型宣言しなくていい言語でやる
0098デフォルトの名無しさんNGNG
>>96
くだらなくない それがJavaプログラミングの味だろ
0099デフォルトの名無しさんNGNG
>>95
>> いろいろ処理する場合、型が必要になるわけで
>いやいらん場合も多いと思うよ

で、いろいろ処理しない場合は必要ないっていってて、いろいろ処理する場合は必要って言ってるように見えるのだけど。
0100デフォルトの名無しさんNGNG
>>99
別にHashMapでも「色々処理すること」は可能だけど透過じゃなくなるだけ
ですよ
画面の入力項目が増えてDBのカラムも増えました
その入力項目は、しかるべきvalidationをおこなって
DBにそのまま突っこむだけです

といった場合、HashMapならコード一行もいじる必要ないよ
0101100NGNG
あ、勿論「画面」はかわるけどね
0102デフォルトの名無しさんNGNG
>>100
いや、せめて、選択カラムを増やすコードは直さなきゃいかんと思うが。
(リクエストの内容をそのままSQLに流すコードは書くこともできるだろうが、超危険)
0103100NGNG
>>102
選択カラムのセットなんて、設定ファイル化できるでしょ?
0104デフォルトの名無しさんNGNG
>>103
まぁ、いいんだけど。
個人的には設定ファイルなんてめんどくさいだけだから要らない。
ファイルなんかじゃなく、もっと適切な場所があるだろうし。
0105100NGNG
>>104
ソースコードの中、とか?(w

DBのカラムにつけられるコメント欄に怪しいコードを書き込んで
それを悪用してた先輩がいたっけ
0106デフォルトの名無しさんNGNG
>>100
なんで、「色々処理すること」は可能っていっておきながら、例として

> その入力項目は、しかるべきvalidationをおこなって
> DBにそのまま突っこむだけです
> といった場合

みたいな、色々処理してない例が出るんだろう・・・
0107デフォルトの名無しさんNGNG
個人的にはHashMapはだめだな。
ルーズすぎる。
新しいフィールドを追加するのも、フィールドけすのも自由なら、
違う型のデータを同じキーで打ち込むのも自由、どんな風にキャストするのかも自由なら、
変数ごとの制度の設定も自由。

だめに決まってるだろ。

ついでに言うと、わたってきたもののインスタンスがなんなのかなんの保障もないし、
どんなフィールドがあるのか、コードから類推できない。

悪いことだらけ。
0108100NGNG
まあ設定ファイル面倒くさいのは同意ですが
普通そういうのはExcelのマクロとかで吐かせるでしょ
糞みたいなxml手で書いてられるかっちゅーの
0109デフォルトの名無しさんNGNG
つまり、Hibernate + XDoclet 最強、と。
0110100NGNG
>>106
もしかしてHashMapで「色々処理する」やり方がわかんないの?

おれは、そういう自明な話じゃなくて、「色々処理しなくて済む
場合」には完全に透過になるからDBのカラム定義が変わろうが
コードなんかいじる必要ないよ、というメリットを話してるだけです。

「色々処理する場合」は、要するにキャストが必要になるだけ、でしょ
HashMapの主要なデメリットは。
0111デフォルトの名無しさんNGNG
>>107
> コードから類推できない

メソッド名が適切なら分かると思うよ。
0112100NGNG
>>107
> どんなフィールドがあるのか、コードから類推できない。

これは結構でかいよね。分かりやすさっつーかreadability。
Perlのようなwrite onlyとか言われる言語でコーディングするのに似てる。
でも、「汎用」だからあたりまえだよね。
コンパイラを眺めたって、それでコンパイルするソースコードが
どんなものかは、分からないのと同じ。

HashMapがいやなあなたは、勿論DOMなんて使わずに
SAXベースで専用のobject木を構築するんですよね、毎回。
0113デフォルトの名無しさんNGNG
>>112
そろそろやめてくれない?
もうそれでいいから。

ここはここで、使いづらくて有用でないORマッパーの評価を続けていくから。
これでいいだろ?
0114デフォルトの名無しさんNGNG
>>108
マクロで吐かせるレベルのものって、なんだ。

その処理に必要なカラムを選択したいからプログラムを書くわけで、
それを設定ファイルっていうのは、やはり面倒だ。メンテナンスしづらい。
0115デフォルトの名無しさんNGNG
>>110
だから、いろいろ処理しない場合は、ORマッピングの意味はあまりない、という話をしてるんだけど。
いろいろ処理するとき、PreparedStatement用意してどうのこうのして、キャストしてどうのこうの、というときの面倒を局所化できる、ということじゃないの?
0116デフォルトの名無しさんNGNG
なんか出だしはよかったのに、今日だけで無駄にスレが間延びしたな・・・。
0117100NGNG
>>114
validationのコードとか。
木構造じゃなくて表的な構造になってるやつはExcelマクロが
最適じゃん。
0118デフォルトの名無しさんNGNG
>>112
> HashMapがいやなあなたは、勿論DOMなんて使わずに
> SAXベースで専用のobject木を構築するんですよね、毎回。

そんなんDigesterにきまってる。
0119デフォルトの名無しさんNGNG
>>115
ばいばい。
0120デフォルトの名無しさんNGNG
>>117
Validaterで。
0121100NGNG
>>115
PreparedStatementだのResultSetだのは局所化するでしょ
HashMap使ってるんなら

HashMapってのはDAO層の上にあるobjectなわけだからさあ
0122デフォルトの名無しさんNGNG
>>100=112
107じゃないが
>HashMapがいやなあなたは、勿論DOMなんて使わずに
>SAXベースで専用のobject木を構築するんですよね、毎回。

単にパースする程度でいいならDOMで済ますけど
いろいろ操作したい場合は当然専用のobject木を構築します。毎回。
SAXベースのこともDOMからのこともありますが。

ORマッピングとHashMapも要は適材適所。
全部が全部どっちでないといかんという代物でない。
HashMap信奉者なのか知らんが何でもかんでもHashMapってのは頭が悪い。
0123100NGNG
>>118
Digesterっつーことはちょっと便利なSAX + 自前obejct treeですね
やはりDOMは
・型安全性がない
・性能がいやん
・マルチスレッド環境が怖い
という感じですか?
0124デフォルトの名無しさんNGNG
>>112
> 勿論DOMなんて使わずに
> SAXベースで専用のobject木を構築するんですよね

そこでRelaxerですよ。
あれもまたトンでもなく冗長なJavaコード吐き出すシロモノで、あれはよくないと思った。

それより、普通にDomプログラミングをしたほうが効率よい。
0125デフォルトの名無しさんNGNG
>>121
> PreparedStatementだのResultSetだのは局所化するでしょ
> HashMap使ってるんなら

相関がない。
HashMap使って、局所化するコード書いてるんなら局所かするだろうけど、そこまでするならORマッピング使った方が楽そう。
0126デフォルトの名無しさんNGNG
>>122

アクセサしかないクラスの自動生成だけは止めてほしいっていう、それだけなんですが。
0127デフォルトの名無しさんNGNG
>>123
っていうか、DOMより楽、ってことで。
0128デフォルトの名無しさんNGNG
>>126
アクセサしかないクラスは、自動生成したい。
0129デフォルトの名無しさんNGNG
>>128
それはHashMapで
0130デフォルトの名無しさんNGNG
>>129
キャストがいや。
たまにある、処理があるセッターゲッターが無視できない
0131100NGNG
>>125
局所化するのは当然の前提ですよ。
HashMapとDBのI/Oを取り持つDAO層のコーディングなんてタカが知れてるけど
いやならDB-Utilつかえばいいじゃん。
HashMapの場合は、UPDATE文やINSERT文は動的に生成することになるけど
affectするカラムは必要な物に完全に限定できますよ。
変更する対象だけHashMapに突っこめばいい訳だからね。
0132デフォルトの名無しさんNGNG
>>131
> HashMapとDBのI/Oを取り持つDAO層のコーディングなんてタカが知れてるけど

だから、タカが知れてるときは、HashMapでどうぞ、と。
0133100NGNG
>>127
そうかなあ。そうかもな。
.NETとかだとDOMがXPATH拡張されてるからラクチンだけど
今どきJavaでもXPATHだよね
まあいったん専用のobject木をつくっちまえば、後はそっちのが楽では
あるんだけれど
0134100NGNG
>>132
ごめんなさい。上で述べたような話は別に案件の性質に依存しないと
思うんですが
どういうときが「タカが知れてない」時なんでしょうか?
0135デフォルトの名無しさんNGNG
>たまにある、処理があるセッターゲッターが無視できない

そうするのが適切なデータベースを扱うソフトって見たことないんだけど、
どういうときに何をやるのか
0136デフォルトの名無しさんNGNG
>>133
オブジェクトにしとけば、イテレータでいけるし。
イテレータだと拡張forで楽ができる予感。
0137デフォルトの名無しさんNGNG
>>134
量が多い
0138100NGNG
>>137
何の?
HashMapベースのDAO層を作るとして、
テーブル数やレコード件数が増えようが
コードの量は別にかわらんでしょ。関係ないもの。
ま、テーブル数が増えれば設定ファイルは増えるだろうけど
それってフレームワークを使う場合と同じだよね。
0139デフォルトの名無しさんNGNG
結局、俺用マッピングフレームワークがあるからORマッピングが必要ないっていってるだけに見えてきた。
0140100NGNG
>>139
ええと、自分でコーディングしたことないんですか?
マッピングフレームワークとかがモテ系になる前に。
「で、楽になりましたか?」
と、そういうことを聞きたいだけなんですが。
0141デフォルトの名無しさんNGNG
>>139

俺用というのが、アプリケーション毎に必要な分だけ書かれたコード、という意味なら、
そういうこと。

それが正しいと思うよ。
0142デフォルトの名無しさんNGNG
>>140
フレームワークの一般論なので、とくに説明する必要ないと思われ。
自分のフレームワークで満足してるなら、それでいいよ。
0143デフォルトの名無しさんNGNG
つまり、「みんな俺様フレームワーク持ってるだろうから、ORマッピングなんかいらないだろ」ということ?
0144デフォルトの名無しさんNGNG
ぐげー伸び具合だ…
0145デフォルトの名無しさんNGNG
ということで、俺様フレームワーク持ってなかったり、持っててもメンテナンスがいやだったり、ちょっとでも自動化したいといったことにあてはまる人以外はORマッピング不要ということで。
0146デフォルトの名無しさんNGNG
HashMapで滅茶苦茶押してる奴はなんなんだ、いったい?

型付けがしっかりしてないと多人数が関わる大規模プロジェクトで
破綻すること請け合いですよ。

PHPとかのスクリプト言語じゃあるまいし。。。
0147146NGNG
ちなみに、HibernateでJDBCを柔軟に使いこなすってのは駄目なの?
単純なマスタ管理部分や更新系はHibernate使っちゃうと楽なんだけど。

BOは自動生成でいけちゃうし、わざわざDTO作る必要ないよね。
0148デフォルトの名無しさんNGNG
>>146
全部Stringでいい、ってプロジェクトなんだと思われ。
0149デフォルトの名無しさんNGNG
>>146
1人か少人数でやってるんじゃない?
0150100NGNG
今やHibernateは大規模プロジェクトでも使われてるんですか
数億ぐらいとか?
俺は怖いですねちょっと

大規模プロジェクトだとEJBなのかなと思ってました

HashMapで数人程度の奴なら回せますよ
実際にはロジックをいじるプログラマは開発要員の一部になる
訳ですから、困らないことが多い訳です。
昔のCOBOLのコーダーをガリガリ入れてたような大規模な奴なら
考え込むでしょうが、そういうやつでJavaというのは
やったことありませんね
0151100NGNG
>>148
Stringにマップする訳にはいかないやつって、どんなです?
BLOBとかですか?
0152デフォルトの名無しさんNGNG
数人規模のプロジェクトの上は、数億規模のプロジェクトなのか・・・
なんか支離滅裂やな。

148じゃないけど、いろいろな処理をする場合は、Stringにマップするわけにはいかんと思うんだが。
0153デフォルトの名無しさんNGNG
HashMapで数人程度の奴なら回せる
大規模プロジェクトだとEJB

なんか、HashMapだと足りなくてEJBだと大げさすぎるものはHibernateがいいかも、っていうのをわかってて書いてないようにしか思えないのだが。
0154100NGNG
>>152
ですから、必要な場合は型変換すればいいでしょう
Stringにしておくと、Validationも透過で扱えるから便利ですよ
正規表現が使えますから

で、あなたが関わっている「大規模プロジェクト」ってのは、
どの程度なんですか?
0155100NGNG
>>153
所詮その程度のものなんですか?

私は今やトレンドのようになっているOR mappingというのを
トレンドだからと言って盲信するのでなしに、
「本当に便利なのか?」というのを知りたがっている、
そういう「普通の」技術者の疑問に答えて欲しいと思っている
だけです。煽れば色々出てくるでしょうし(w
0156146NGNG
なぜに>>100さんがそれほど強気なのかわからんのだが・・
Mapでキーにする文字列は定数化とかしてるのかな?ある意味マジック
ナンバーになりかねないと思うけど。

とりあえず、型の考え方についてはEffectiveJavaの7章をしっかり
読んどいた方が良いよ。
http://www.amazon.co.jp/exec/obidos/ASIN/4894714361/qid=1088901593/ref=sr_8_xs_ap_i1_xgl14/250-7076236-2214640

***

あと、話題に出たEJBですがHibernateやっておくと3.0へすんなり
移行できそうです。

http://www.theserverside.com/news/thread.tss?thread_id=27005
0157デフォルトの名無しさんNGNG
>>154
> Stringにしておくと、Validationも透過で扱えるから便利ですよ
> 正規表現が使えますから

Validationがなにを指してるかわからんが、大文字で始まってるからにはなにかのクラスなんだろうか・・・
別にStruts使えば、Stringじゃなくてもバリデータ使えるし、正規表現使えるし。
ってか、そもそも正規表現でチェックしたいデータは文字列だし。
0158デフォルトの名無しさんNGNG
>>155
> 所詮その程度のものなんですか?

何期待してるの?
HibernateがEJBを置き換えると思ってたの?
両者特性が違うから、使い分けるものだと思うんだけど。

> 「本当に便利なのか?」というのを知りたがっている

その「本当に便利」というのは、どんな場合でも便利、ということなんかな。
「所詮その程度」という言葉が出てくるってことは。
0159デフォルトの名無しさんNGNG
>>146
だから、全部Stringなんてありえないって。
nIntegerやLongやBooleanとかいろいろあるだろ。
0160デフォルトの名無しさんNGNG
むしろ、アクセサしかないクラスはスッパリとなくしてしまったほうが
メンテナンスしやすくなって、大規模開発に向いていると漏れは思う。
0161157NGNG
StrutsでStringじゃなくてもバリデータつかえるっていうのはちょっと違った・・・
0162デフォルトの名無しさんNGNG
>>160
なんでメンテナンスしやすくなる?
0163デフォルトの名無しさんNGNG
>>162
コードは短いほうがよい
0164デフォルトの名無しさんNGNG
なぬ?
0165デフォルトの名無しさんNGNG
Javaに限らないんだが、
ソフトウェアの命はソースコードなんだから、
一行たりともムダなコードは書かないっていう意気込みを持った、
リファクタリングの文化が浸透している組織がもっとあっていいと思う。

ムダなコードがりがり書いて、質の悪いコードが自動生成されたとしても平気なのが、
図太いのかどうなのか。とにかくコードが無意味に沢山あるのが許せん。
0166デフォルトの名無しさんNGNG
>>163
コードが短いほどメンテナンス性が高くなるとは限らない。
処理上ひとつのメソッドで実装できるけど、ユニットテストのためにメソッド分割してコードが長くなるのがわかりやすい例。

アクセサしかないクラスのプロパティは、ツールで生成するし。
0167デフォルトの名無しさんNGNG
画面入力データ(ActionForm等)をHashMapに詰め込むところは
ゴリゴリ書くんですか?
0168デフォルトの名無しさんNGNG
>>165
ムダなコードはムダだけど、冗長なコードがムダとはかぎらない。
まぁ、アクセッサメソッドはC#のプロパティみたいな仕組みがあれば省略して書けるとは思うが。
「省略して書ける」だけだよ。
0169デフォルトの名無しさんNGNG
>>167
BeanUtils
0170デフォルトの名無しさんNGNG
>>168

Javaがあえて省略して書けないようにしてるっていうのは、

「アクセサ多くなりがちなときはキーを渡して値を返すメソッドを作ってくれ」

というJavaの言語仕様設計者のというメッセージなのだと思う。

漏れはこれが気に入っているが。
0171デフォルトの名無しさんNGNG
Mappingの方法で質問なんですが
実際に存在するテーブル一つに対してSELECTとかはできるんですが
JOINとかで結合する場合ってどうやって書けばいいのかわかりません
仮想的なそういうテーブル定義するんですか?
それともViewをDB側であらかじめ作っておきそれに対して
Mapping書くとか?
0172デフォルトの名無しさんNGNG
>>165
> ソフトウェアの命はソースコード

自分が書く部分は命と呼んでいいけど、自動生成されたものは正直どうでもいい。
NetBeansが吐き出すGUI構築部分とか
0173デフォルトの名無しさんNGNG
>>171
せめて、何使ってマッピングしてるのか書け。
0174デフォルトの名無しさんNGNG
>>170
> 「アクセサ多くなりがちなときはキーを渡して値を返すメソッドを作ってくれ」
> というJavaの言語仕様設計者のというメッセージなのだと思う。

「目があったからあの娘はオレのことが好き」理論だな。
0175デフォルトの名無しさんNGNG
>160

――--、..,
:::::::,-‐、,‐、ヽ.
:::::_|   |  |-i、     
/. ` ' ● ' ニ 、
ニ __l___ノ  
/ ̄   | i    
|    _\\
|( ̄`'  )/ / 
`ー---―' /  
====( i)=:
0176デフォルトの名無しさんNGNG
>>173
流れから察してやれよ
0177デフォルトの名無しさんNGNG
>>174
こういうのを全否定しているんだとしたら、
何の仮説も言えんじゃないか。
0178デフォルトの名無しさんNGNG
凄いレベルが低い話が続いてると思うのは俺だけ?
0179デフォルトの名無しさんNGNG
>>173
いえ、どのFrameworkっていうわけではないんですが
結合したテーブルをエンティティーオブジェクトとして扱うには
どうやって実現すればいいのかな?と思って
たとえばターキだとどうするのでしょう
一つのテーブルに対しての操作方法はわかるんですが
通常、一つのテーブルからデータ持ってくるだけでは済まないですよね
ある情報をSELECTしてきて、さらにIDと日本語名のマスタから
日本語名を取り出して表示させる場合とか
SQLだとJOINすれば済みますが

0180デフォルトの名無しさんNGNG
>>171
http://www.hibernate.org/hib_docs/reference/en/html/mapping.html#mapping-declaration-manytoone
0181デフォルトの名無しさんNGNG
>>177
少なくとも>>170は、仮説というか、根拠の無い思い込みだ。
仮説だというなら、その根拠になるものをなにかあげてくれ。

おれはアクセッサメソッドだけのクラスは「ツールで生成して振り返るな」というものだと思ってる。
別にJavaの仕様の何かが、暗に導いてるというわけじゃなく、勝手に思ってる。
0182デフォルトの名無しさんNGNG
>>179
外部キーが関連オブジェクトになるイメージ。
ローディングで負荷がかかりそうな箇所は、キャッシュを利用する事で回避。
0183デフォルトの名無しさんNGNG
>>178

こんな型がどうこうなんて、非本質的なのは確かだが、

Mapを使うかいいか、長いクラス定義するのがいいかっていうのは、
美意識の問題なもんだから、これはこれで面白い。
0184デフォルトの名無しさんNGNG
>>179
Turkey・・・ボーリングでストライクを3回続けて出すこと
Torque・・・トルク、偶力
0185デフォルトの名無しさんNGNG
Mapはマジでナンセンス。
キーをスペルミスする馬鹿が頻出して困る。
0186デフォルトの名無しさんNGNG
>>185
ユニットテスト
0187デフォルトの名無しさんNGNG
>>186
実行時にならないと、そういったミスが判断できないような
アプリケーションはどうかと思う。
0188デフォルトの名無しさんNGNG
>>178
チームで開発するときは、チームの方針に合わせてやっちゃうからね。
言いたいこといろいろいあるんじゃないかと。
0189デフォルトの名無しさんNGNG
>>183
サーブレットからJSPにデータを渡すときみたいな一時的なものや、文字列にして表示するだけならMap
あっちゃこっちゃで使ったり、型が必要ならアクセッサメソッド。

長くなるかならないかは判断基準にならないし、するべきではない。
0190デフォルトの名無しさんNGNG
>>187
実行時にならないと判断できないミスって、他にもいろいろあるんだし。
そんなささいなミスを無くすために、ここでわざわざ長いコード生成するほどのことかと。
フレームワークがメンテナンスされなくなったときのリスクもあるんだし。
0191デフォルトの名無しさんNGNG
>>185
JSPに渡すだけなら、結局ELのところで実行するまでわからないことになるから、Mapでいい。
0192デフォルトの名無しさんNGNG
>>190
他にもいろいろあるからこそ、コンパイラで静的に保証できる部分は保証できるようにしておく。
0193179NGNG
皆ありがとう
リンク先読んでもJOINをどのようにすればいいのかわからんので
とりあえずもうすこし勉強します
外部キーですかなんとなく理解できそう

>>184
ですよね
こないだ、新プロジェクトで初顔合わせのリーダが
「ターキかハイバーネットを使用したいと思っている」
とか言っていたので「あ、あれってターキーて読むんだ」
と思いました
自分は今までトルクだと思っていましたので
「あぶねー恥かくところだった」と思いました
0194デフォルトの名無しさんNGNG
>>190
>>189が言ってるように長くなるかならないかは判断基準にはならない。
値の受け渡し箇所なんて、特にケアレスミスの発生しうる所だから
なるべくコーディング時にミスかどうかを判断させるべき。
0195デフォルトの名無しさんNGNG
>>192
そんな保証しなくていい。
コード追いかける身になってくれよ。
0196デフォルトの名無しさんNGNG
>>193
字で書くときはアルファベットのまま書くがよろしい。
nateをネットと読むこともないし。
最近の流れを見てるとTorqueよりはHibernateの方がいいらしいぞ。
0197デフォルトの名無しさんNGNG
>>195
オイオイ…ちゃんと良書読んでるか?
0198デフォルトの名無しさんNGNG
Torqueであまり考えずに作るとOutOfMemoryに悩まされますよ。
0199デフォルトの名無しさんNGNG
>>191
それ、selectした結果をそのまま出すだけならそうかも知れないけど
selectした結果を使って何か処理したりする場合は…
0200デフォルトの名無しさんNGNG
>>195
Map使ってキーの名前間違ってて変な挙動した時のほうが、コード追うの大変。
単なるセッターゲッターだとわかれば、次からみなければいいし。
0201デフォルトの名無しさんNGNG
>>194
そんなこと続けてたんじゃ、
アクセサだけのクラスが多すぎて、本質的なコードが埋もれてしまう。
地獄だ。
0202デフォルトの名無しさんNGNG
>>199
だからJSPに渡すだけなら、と限定してる。
0203デフォルトの名無しさんNGNG
>>201
パッケージわければいい。
0204デフォルトの名無しさんNGNG
なんかMapをひたすら推してる奴等は、全然OOを理解していないんじゃ
ないだろうか。開発効率を優先とか言い張る気なのかな?

Map使いまくってるPJのヘルプに入った時、構造が全然つかめなくて
なんのためにJava使ってるのか意味不明だった思い出がある。
0205179NGNG
>>最近の流れを見てるとTorqueよりはHibernateの方がいいらしいぞ。
じつは僕、前すれ(だったかな)でHibernateの情報が英語しかなかったときに
一度、動作確認してその流れを書いた者です
あれから全然触っていなかったしこのスレもあんま見ていなかったので今から再度勉強してみます
0206デフォルトの名無しさんNGNG
>>201
おいおい、リファクタリングで局所化すればいいだけだろ?
0207デフォルトの名無しさんNGNG
>>204

OOの本質はポリモーフィズムだろ

振る舞いを持たないクラスを大量生成してオブジェクト指向って、ばかすぎる。
0208デフォルトの名無しさんNGNG
>>205
というかHibernateのGavinがEJB3.0に関わってるから、Hibernateが
主流になっていくのは間違いない。
あのソースを理解するのはかなり厳しいが・・・
0209デフォルトの名無しさんNGNG
>>206
リファクタリングはソースコードの品質を高めること。
コードを自動生成してたんじゃリファクタリングなんてできんだろ。
そのコード削れないんだから。
0210デフォルトの名無しさんNGNG
>>207
ええぇ・・・
0211デフォルトの名無しさんNGNG
>>204
OOは関係ない気が。
コードのメンテナンス性を理解してないだけだと思われ。
0212デフォルトの名無しさんNGNG
>>209
パッケージわけるとか、処理を埋め込むならGenerationGap使うとか普通の話でしょ。
0213デフォルトの名無しさんNGNG
なぜいきなりレスが増えたのだ
0214デフォルトの名無しさんNGNG
俺は今目が覚めたところデス
0215デフォルトの名無しさんNGNG
>>208
そうなんすか
じゃHibernateの理解は重要ですね
0216デフォルトの名無しさんNGNG
>>207
ポリモーフィズムはOOの手段の一つで、本質は責任の分離。
0217デフォルトの名無しさんNGNG
関係ないけどHibernateInAction全然届かないな。
0218デフォルトの名無しさんNGNG
>>211
CVSリポシトジに自動生成したコードが大量に入ってるなんて、
想像しただけで嫌になる。

コードは少量・シンプルなのがいい。
データはMapと決めたほうが分かりやすい。クラスだと何か振る舞いを持っているのか
いちいちチェックしないといけない。
0219デフォルトの名無しさんNGNG
>>213
雨が降ってきたから。
0220デフォルトの名無しさんNGNG
>>216
そう。責任の分離。
ならば、やはりデータの受け渡しは潔くMapに任せるほうがよい。
0221デフォルトの名無しさんNGNG
MapをDynaBeanとかにすれば済むって話?
ここ数レス見てるとそう取れるレベルの話になってるぞ…
0222デフォルトの名無しさんNGNG
何万件のレコードを扱う場合ってどうするんですか?
メモリ内でやってもいいですが、メモリ喰いますよね
一度、テキストファイルとかに落とした方がいいんでしょうか?

それからいつも思うんですが
DBから取り出すデータを全部出すんじゃなくって
上から何行目までとかいう取り出し方ってないですかね?フレームワークで

データに通番つけて100番までとかいう条件つけるぐらいしか思い浮かばない
0223デフォルトの名無しさんNGNG
>>218
設定ファイルから自動生成するだけのコードなら、そのコードはCVSに入れず、設定ファイルのみCVS管理する。

> クラスだと何か振る舞いを持っているのか
> いちいちチェックしないといけない。

ツリーで、セッターゲッター以外があるか確認するだけでいい。

バグの可能性は少ないほうがいい。
0224デフォルトの名無しさんNGNG
>>218
だからパッケージで分けろって。
クラスだからとかそういうレベルじゃなくて、VOとかServiceとかDAOとか
役割でパッケージングして振る舞いを決めておけば苦労しないだろ。

そもそも、Service層とWeb層のやり取りをMapでやるなんてゾッとする。
0225デフォルトの名無しさんNGNG
>>222
> 何万件のレコードを扱う場合ってどうするんですか?
> メモリ内でやってもいいですが、メモリ喰いますよね

データベースにまかせる。

> DBから取り出すデータを全部出すんじゃなくって
> 上から何行目までとかいう取り出し方ってないですかね?

limit/offset使う
0226デフォルトの名無しさんNGNG
どもです
0227デフォルトの名無しさんNGNG
>>222
普通に提供されている。あとLazyLoding利用するとか。

まずリファレンスくらい読んで機能把握しろ。
0228デフォルトの名無しさんNGNG
>>224
> Service層とWeb層のやり取り

Servlet→JSPの連携を言ってるのか、アプリケーションロジック→Servletの話か、説明きぼん。
0229デフォルトの名無しさんNGNG
> 設定ファイルから自動生成するだけのコードなら、
> そのコードはCVSに入れず、設定ファイルのみCVS管理する。

Map使えばそんな技巧は要らないのに・・・。

フレームワークが、それがいろんな手続きを省略できて、人間からみて
読みやすくしているものならいいのだが、ORマッピングのフレームワークは
むしろ面倒にしているだけとしか思えない。
0230225NGNG
ORマッピングのスレだったΣΣ(゚д゚lll)
0231デフォルトの名無しさんNGNG
>>224
だから。DynaBeanならいいわけ??
0232デフォルトの名無しさんNGNG
>>228
Action→Service(ビジネスオブジェクト)間のやり取りのこと。
DAOはServiceで利用される。

DIConにはSpringを使ってたりしてる。
0233デフォルトの名無しさんNGNG
>>230
そ、そうですよ
だから、Frameworkでどうするのかと・・・
0234デフォルトの名無しさんNGNG
>>229
技巧っていうか?

ま、HibernateにしろStrutsのActionFormにしろ、XDocletのタグが入るから、CVS管理するんだけども。
0235デフォルトの名無しさんNGNG
>>229
コーディング自体は面倒になるとしても、管理が一元化できて楽とかになって
それがいいと思えば使えばいいし
そんなのいらんと思えば使わなければいい。
ぶっちゃけ、JavaじゃなくてPHPでいいやと思えば、PHPでも似たようなアプリは作れるといった
レベルの話をしているだけだぞそれ。
0236デフォルトの名無しさんNGNG
>>235
ちょっとその人はEnterpriseDevの視点が薄いように思える。
0237デフォルトの名無しさんNGNG
>>236
目先の楽さにとらわれてるだけのような。
0238デフォルトの名無しさんNGNG
>>236
そもそもそこまでの話は出ているのか?
みんなMapうんちゃらCVSうんちゃらでものすごくミクロな視点でしか語ってないぞ。
0239デフォルトの名無しさんNGNG
>>238

単にコードの自動生成は止したいいという、ただそれだけ。
これは、エンタープライズ開発でも小規模開発でも、同じだと思う。
0240デフォルトの名無しさんNGNG
>>238
メンテナンス性がどうのとか、静的型保証の意義とか、そういう話。
0241デフォルトの名無しさんNGNG
性的型保証は必要ですぞ!
0242デフォルトの名無しさんNGNG
>>239
自動生成できるもんは自動生成する。
エンタープライズの場合、極端な話、Javaのコードはすべて自動生成したい。
0243デフォルトの名無しさんNGNG
自動生成する事によって、本当に必要なコードしか書く必要がなくなったよ。
0244デフォルトの名無しさんNGNG
>>242
コーディングレスなアプローチを設計するときは、
コード生成せず、設定ファイルとライブラリだけで動くようにしてください。

なんでソースを自動生成することにこだわるのか。
0245デフォルトの名無しさんNGNG
スクリプトあがりの技術者が多いんだろうなあ。
俺も昔はMap大好きっ子だったしw
0246デフォルトの名無しさんNGNG
>>239
自動生成がいやなら、問答無用で「いらん」って一言言って終わりじゃねーか。
話し合いにも議論にもなりゃしないだろ。
0247デフォルトの名無しさんNGNG
>>218
rubyとかいう糞言語に汚染されてる悪寒。。
0248デフォルトの名無しさんNGNG
だから、MapじゃなくてDynaBeanならいいのかよ?
0249デフォルトの名無しさんNGNG
>>244
最低限必要なクラスは存在するものです。
それともVOとかも設定ファイルを作っちゃうの?

それこそ俺様フレームワークですよ。
0250デフォルトの名無しさんNGNG
セッターゲッターしか持たないBeanを自動生成して、どこが悪いのか?
0251デフォルトの名無しさんNGNG
>>248
静的型保証が出来ない時点で論点が一緒。
0252デフォルトの名無しさんNGNG
>>244
> コード生成せず、設定ファイルとライブラリだけで動くようにしてください。
完全なコーディングレスができるならね。
っていうか、その場合はコードじゃなくてクラスファイル作るわけだが。
現実的には完全なコーディングレスはできないから、ソースファイルを生成して必要なところだけカスタマイズする。

> なんでソースを自動生成することにこだわるのか。
ソースを書くことは、ある一定の確率でバグを作りこむことだから。
0253デフォルトの名無しさんNGNG
>>248
DynaBeanはいいよ。
0254デフォルトの名無しさんNGNG
しかし、OR-MappingのスレでMap論を連呼されてもね。
もうちょっと勉強してから参加して欲しいと思うよ。
有意義な話にまったくならん。
0255デフォルトの名無しさんNGNG
>>252
雛形としての自動生成ってことなら、いいと思うんだが。

ちょっとデータ受け渡しの仕様変えるだけで、Javaコード吐き出し
ツールを動かしてJavaコード自動生成、っていうことなら、それは
よくない。
0256デフォルトの名無しさんNGNG
自動生成を否定しているのは、まともに自動生成を利用している
プロジェクトを知らないだけとかそんなオチ?
0257デフォルトの名無しさんNGNG
Map派→余分なBeanなんかいらない
O/Rマッピング派→静的型保証のできるBeanは必須

こんなのでは10年話したって決着つかないよ。
そもそもMap派はなぜこのスレにいるのか。いらないと思ったらこんなスレに来るなよ。
0258デフォルトの名無しさんNGNG
ちょっと前にやたらMapにしよう!という外注さんがいたなぁ。。。
あまりに自分勝手な人だったんで2週間でお取引願ったがw
0259デフォルトの名無しさんNGNG
>>255
ちょっとデータ受け渡しの仕様が変わる部分を手作業で
変えていく方がよくない。担当者によってはデグレートが発生しますよ。
0260デフォルトの名無しさんNGNG
>>228
普通に考えて後者だろ。
「型安全」をわかってないやつ大杉。
0261デフォルトの名無しさんNGNG
スクリプト書いてる人らは型に対する意識が低いように思える。
型に対する意識が低い人は、無意識にバグを埋め込む頻度が高い気がする。
0262デフォルトの名無しさんNGNG
>>259
はっきりいってERDが固まっていない時点でコーディングをすること自体よくない。
0263デフォルトの名無しさんNGNG
自動生成で作って、細かく手を入れたいところでは
ジェネレーションギャップパターン使えばいいじゃん。
0264デフォルトの名無しさんNGNG
Map推進派はそもそもの考え方がJavaのような型定義がしっかりしている言語に
向いてないよ。VBとかやれば?
0265デフォルトの名無しさんNGNG
最近アーキテクトやらせてもらう事が多いから気にならなかったけど、
いまだにMap信者っているんですね。
0266デフォルトの名無しさんNGNG
すげぇ。日本のOR技術者がゴミのように集まってきたよ
0267デフォルトの名無しさんNGNG
>>264
どうせVBでVariantとか使いまくってた人たちでしょ。
0268デフォルトの名無しさんNGNG
こんなもん。規模によって使い分ければいいだろう。
0269デフォルトの名無しさんNGNG
>>262
データベースのスキーマがほんとに固まるまで待ってたら、いつまでたってもコーディングできん。
コーディングの段階で変更の必要に気付くこともあるし。
0270デフォルトの名無しさんNGNG
>>266
これ、ORの話じゃ全然無いよ。
0271デフォルトの名無しさんNGNG
ここ2〜3日で一気に糞スレになりはてた ヽ(`Д´)ノ
0272デフォルトの名無しさんNGNG
>>269
あきらめたらそこで試合終了だよ
0273デフォルトの名無しさんNGNG
>>268
なんだけど、Mapの人は、小規模から大規模まで、Mapでやれとおっしゃる。
0274デフォルトの名無しさんNGNG
>>272
理想求めても、試合終了なんだけど。
0275デフォルトの名無しさんNGNG
>>265
型が保証されているっていうのは、そんなに重要ではないでしょ?
ただClassCastExceptionを避けるためでしかない。

それをやるためだけに、アクセサだけのクラスを(自動生成とかして)作ったりするのは
合理的ではない。非本質的なコードが多くなってメンテナンスしづらなくなる。
0276デフォルトの名無しさんNGNG
2〜3人ならMap使っても良いよ。俺は使わないけど。
0277デフォルトの名無しさんNGNG
>>275
オイ、潜在的なバグをどれだけ減らせると思ってるんだ?
0278デフォルトの名無しさんNGNG
>>274
自動生成ツールくらい使いこなせよ。Antで自動化してれば面倒臭くないべ。
コーディングミスのような人為的ミスを許す方が、よっぽど理想から遠くなる。
0279デフォルトの名無しさんNGNG
>>275
> 型が保証されているっていうのは、そんなに重要ではないでしょ?
> ただClassCastExceptionを避けるためでしかない。

ClassCastExceptionだろうがなんだろうが、実行時に予期しない例外がでることは大問題。
その可能性が減らせることは重要。
0280デフォルトの名無しさんNGNG
>>278
流れ嫁。
データベースのスキーマは自動生成できんよ。
0281デフォルトの名無しさんNGNG
正論はどちらか明らかだが、あまりにも馬鹿馬鹿しいので参加しない。
0282デフォルトの名無しさんNGNG
>>280
ERWin
0283280NGNG
ツッコミどころがあるな。
データモデルは自動生成できん、だな。
オブジェクトが先かリレーショナルが先かと、順番を変えて、あとの方は自動生成できるが。
0284デフォルトの名無しさんNGNG
>>275
Javaやってるとは思えない発言だな。
0285デフォルトの名無しさんNGNG
>>284
たぶんPHPあたりが本職です。
0286デフォルトの名無しさんNGNG
>>283
そこら辺はBottom-UpやTop-Down、Middle(なんとか)の考え方が
Hibernateで説明されてたよ。
0287デフォルトの名無しさんNGNG
コンパイルが通るのも、それほど重要ではない、とでもいいそうな勢いだな。
動かせるところは動かせばいい、と。
動かしながら文法エラーがみつかったら「Parse error」とか出せばいい、ってね。
0288デフォルトの名無しさんNGNG
>>279
ユニットテスト

実行時エラーの可能性といったって、大して変わらないと思うけどね。
それを回避するためだけにフレームワークの使い方覚えて、大量に見づらいコード生成するって、これはやりすぎだ。
フレームワーク自体がメンテされない状況になったときのリスク犯してまでやることじゃない。
0289デフォルトの名無しさんNGNG
>>288
それをユニットテストの責務に入れるなよ・・・
0290デフォルトの名無しさんNGNG
>>288
アクセッサ書くのはいやで、ユニットテスト書くのはいいの?
アクセッサ使ってれば型保証に関してはテスト書く必要ないと思うんだけど。
0291デフォルトの名無しさんNGNG
>>289
入れてないと、落とし穴にハマると思うよ。

フレームワーク自体のバージョンが変わったときに、
フレームワークを信用して作ったソフトが動かなくなったっていうのは、よくある話。

逆に、ORマッピングフレームワークやるからにはしっかりとテスト作らないといけない。
0292デフォルトの名無しさんNGNG
>>291
それは、R→Oの段階だよね。
Mapの場合、O→Oの段階でもテストが必要になる。
0293デフォルトの名無しさんNGNG
>>291
>>290と一緒の見解。
あと、OR使った時は少なくとも自動生成したDAOに関しては
UnitTest書く必要はないと思うけど。
0294デフォルトの名無しさんNGNG
>>292
DynaBeanならR→Oは不要になるな。
0295デフォルトの名無しさんNGNG
> ただClassCastExceptionを避けるためでしかない。
爆笑。ClassCastExceptionが何のためにあるのかわかってない。Javaやめた方がいいよ。
VBかPHPかJavaScriptを奨める。
0296デフォルトの名無しさんNGNG
>>294
書いたSQLのテストは?
0297デフォルトの名無しさんNGNG
凄いレベルの低い技術者が一人で強情はってるだけの気がするね。
同じプロジェクトにいたら面倒臭そう。
0298デフォルトの名無しさんNGNG
あくせく働くのではなく賢く働こう: Kent Beck氏へのインタビュー
http://www-6.ibm.com/jp/developerworks/java/030926/j_j-beck.html

> Javaは非常に悲観的だと思います。Javaのコンパイラに「このプログラムは実行
> できるか分かりません。だから実行しません」と言われたことがあるでしょう。私は、
> 悲観的な言語の安全性とは幻想である、ということに気づいています。
0299デフォルトの名無しさんNGNG
Beckを出すのは良いけど、今回の件とリンクする次元の事なの?
0300デフォルトの名無しさんNGNG
>>298
Integer a = 3;
Object o = a;
String str = (String)o;

これがClassCastExceptionになる以上は、ここでそんな話持ち出しても意味がない。
0301デフォルトの名無しさんNGNG
>>300

まさいこういうことじゃないの?

それに、XP的にいうと、
つまらないミスを回避するためだけに仰々しいフレームワークを導入するのは
You arn't gonna need it の原則に反するし。
0302デフォルトの名無しさんNGNG
>>301
XPの人数スコープ知ってる?
0303デフォルトの名無しさんNGNG
>>301
BeckはここでClassCastExceptionになるのが問題といってるので、ClassCastExceptionになってしまうのだから、そうならないようにする。
で、>>288のいうようにユニットテスト書くのであれば、ソース自体で保証して、テストが必要ないようにすればいい、という話。

> つまらないミスを回避するためだけに仰々しいフレームワークを導入するのは
> You arn't gonna need it の原則に反するし。

つまらないミスを回避するという目的があって、そのフレームワークがその目的を達成するなら、その原則には反しない。
0304デフォルトの名無しさんNGNG
お前ら釣られすぎ、更新したら件数にバビッタヨ。
0305デフォルトの名無しさんNGNG
Mapだと、put("torque","a");としたところをget("turkey")にしたら実行時エラーがでるわけだろ。
で、そこでひっかからないためのユニットテストが必要になるわけだ。
class Hoge{
 String torque;
 String getTorque(){ return torque; }
 void setTorque(String torque){ this.torque = torque; }
}
としておけば、getTurkeyはコンパイルエラーだ。
で、この例みて、そんなコード書くのがめんどくさい、というかもしれんが、このコードはツールで自動生成できる。
ユニットテストは自動生成できない。
0306デフォルトの名無しさんNGNG
>>305
nullが帰っては来るが実行時エラーになるかどうかはその後のコード次第。
0307デフォルトの名無しさんNGNG
>>306
例外がでなくても、意図した動きと違うだろ。
0308デフォルトの名無しさんNGNG
> BeckはここでClassCastExceptionになるのが問題といってるので、
> ClassCastExceptionになってしまうのだから、そうならないようにする。

ORマッピングフレームワーク利用推進派は型安全マンセーなわけだよね。
ClassCastException起こるべきところで起きなかったら型安全マンセーな人は怒ると思うんだけど。


> ソース自体で保証して、テストが必要ないようにすればいい、という話

ソース自体の保証って、どっちにしろテストは書くのだから、ClassCastExceptionだけ回避できても
大した意味ないと思う。
0309デフォルトの名無しさんNGNG
今頃>>47が草葉の陰で泣いてるぞ。
0310デフォルトの名無しさんNGNG
>>308
っていうか、ORマッピング使う意味って、型保証だけだと思ってるの?
0311デフォルトの名無しさんNGNG
>>308
> ClassCastException起こるべきところで起きなかったら

だから、型保証することで、ClassCastExceptionが起きないようにするってことだよ。
0312デフォルトの名無しさんNGNG
>>308
> ソース自体の保証って、どっちにしろテストは書くのだから、ClassCastExceptionだけ回避できても
> 大した意味ないと思う。

コンパイル時に型が保証できれば書かなくていいテストもある。
0313デフォルトの名無しさんNGNG
ところで、検索の結果表に対してクラス自動生成する
O-R mapperって存在する?
0314デフォルトの名無しさんNGNG
テストが完全に書かれる保証はない。
0315デフォルトの名無しさんNGNG
>>311
型保証したところで、大した意味無い(幻想)っていってるんじゃ。
0316デフォルトの名無しさんNGNG
>>313
Hibernateのhbm2java?
0317デフォルトの名無しさんNGNG
>>315
型保証より、名前保証の方が大切な気がしてきた。
0318デフォルトの名無しさんNGNG
Hibernateで表結合を行うクエリ発行して戻り値を受け取る場合…

Iterator it = lst.iterator();

if( it != null ){
 while( it.hasNext() ){

  Object[] aryObj = (Object[])it.next();

  String strCcode = (String)aryObj[0];
  String strCname = (String)aryObj[1];
  String strBcode = (String)aryObj[2];
  Date dtSdate = (Date)aryObj[3];
  String strMname = (String)aryObj[4];
  int intMprice = (int)aryObj[5];

  ・
  ・ 各インスタンスを使用した処理
  ・

 }
}

型保証もヘッタクレもない。
これじゃRowSetDynaClassと変わらんじゃないか!
ていうか、いくら1テーブルに対して1Beanを作ってくれるとしても
表結合なんか日常茶飯事なんだから、これじゃ全然意味無いんだよ。
0319179NGNG
>>318
そうですよね
僕はそのことを疑問に思って先ほど質問したんです(>>179
そんな事やるぐらいなら
素直にJOIN使ったSQL書いたほうがマシなのではないかと・・・
0320デフォルトの名無しさんNGNG
関係ないが、改めて、版画リアン記法ってかっこ悪いと思うな。
0321デフォルトの名無しさんNGNG
>>318
確かに、それはいやだ。
0322デフォルトの名無しさんNGNG
>>320
まったくだ。
0323デフォルトの名無しさんNGNG
>>47のサンプルなんだけどね。
intMpriceって型がlongになったら、変数名全部変えるんだろうか、とか。
0324デフォルトの名無しさんNGNG
>>318
むしろ、配列のインデックスがselectで指定した順、っていうのが気になるけど。
select a, b, c ... ってクエリだとすると
Object[0] → a
Object[1] → b
Object[2] → c
になるらしいけど、こっちの方が可読性も低くなるし、危険じゃね?
0325デフォルトの名無しさんNGNG
それならまだMapの方がいいね。
0326デフォルトの名無しさんNGNG
まだMap厨がいるのか。
Mapスレ立ててそちらでやってくれ。
お前はMapを使い、俺たちはHibernate他を使う。
0327デフォルトの名無しさんNGNG
>俺たちはHibernate他を使う
その「他」にMapが入ってるくせに
0328デフォルトの名無しさんNGNG
>>326
煽りではなくてマジ質問なんだけど、表結合の時はどうしてるわけ?
>>318見る限り、今まで書かれてきたHibernateのメリットがあまり見えないんだけど…
別の書き方とかあるの?
0329デフォルトの名無しさんNGNG
>>328
同意

表結合はどうすんの?
まさか、SELECTしてきたレコードに対してさらにSELECTするなんてオチじゃないだろうな?
それだったら、ただ単にORマッピングって言うのは
DBアクセスだけをラッピングしたものってことになる
0330デフォルトの名無しさんNGNG
結合などのSQL文を抽象化してくれないと意味ないんだよな〜
テーブルに対して一個のJavaBeanつくったって意味ないじゃ〜ん

0331デフォルトの名無しさんNGNG
>>329
実際のところそうなのかもよ。
OODBなんかそうだよね。あれはリンク辿るけど。
0332デフォルトの名無しさんNGNG
>>331
え?まじすか?
もしそうだとしたら
ORマッピングって
オブジェクト志向的にDBのテーブルを操作するだけのものってこと?
そんなんならあんま意味ないよね
カスケードとかはできるみたいだけど
表結合って頻繁に使うよねマジで
SQL一本書いたほうが逆に楽なんじゃない?と思うわけよ

俺はてっきり
表結合された感じのJavaBeanを自分で作って(もちろん定義ファイルも自分で書く)
それをマッピングツールが勝手にJOINしてくれて
レコードが返ってくる機能は当然あるんだろうなと思っていたわけです

0333デフォルトの名無しさんNGNG
>>332
>表結合された感じのJavaBeanを自分で作って(もちろん定義ファイルも自分で書く)
>それをマッピングツールが勝手にJOINしてくれて
>レコードが返ってくる機能は当然あるんだろうなと思っていたわけです
今までの書き込み見たら、誰だってそう思うよね…
俺もそう思ってたよ。
0334デフォルトの名無しさんNGNG
Mapは型が、、という問題はJava 1.5になれば解決する話ですか?
0335デフォルトの名無しさんNGNG
Templateじゃなくって、なんていうんだっけ
0336デフォルトの名無しさんNGNG
>>334
しません。せいぜいMap<String, Object>でキーがStringであることが指定できるだけです。
0337デフォルトの名無しさんNGNG
>>329
> ORマッピングって言うのは
> DBアクセスだけをラッピングしたものってことになる

基本的には、そう。
0338デフォルトの名無しさんNGNG
>>335
Generics
0339デフォルトの名無しさんNGNG
>>332
> オブジェクト志向的にDBのテーブルを操作するだけのものってこと?
> そんなんならあんま意味ないよね

そうでもない。
0340デフォルトの名無しさんNGNG
なんか、OR派の意見が返ってこないところを見ると
マジで結合できないんかな〜
外部キーとか定義ファイルに書いてるみたいだけど意味なさそう・・・

DBアクセスとかのコードは普通にそういうクラス書いてラッピングしようと思えばできます
あとは個々のSQLごとにJOINするSQLのString入れればそれを表すBeanが帰ってくるように
するクラスを一つ一つ書いた方が楽なんじゃね?
DBの変更を考えるとこの方法って辛いけど
0341デフォルトの名無しさんNGNG
>>340
あんだけ活発なスレだったのに、>>318が出たとたんにOR派の書き込みが減ったことからして
かなりアヤシイよな・・・
0342デフォルトの名無しさんNGNG
>>333
> 今までの書き込み見たら、誰だってそう思うよね…

今までの書き込みは、アクセッサのみのクラスとMapの比較だからね。
ORマッピングとかHibernateとかとは、別問題。
今までの書き込みがあって、HibernateのJOINが使えないね、という話になる。
0343デフォルトの名無しさんNGNG
ORマッピングツール
「一発でいろんなもの生成してくれる」
それだけのものなの?
DB変更には強いけど
書いてるソースが結局JDBCと同じならあんま使っても・・・

オブジェクト志向的に物を考えるのは、こういう場合には適さないのかもしれない
>>340のやり方は極端だが
オブジェクト志向的に考えることによって逆に難しくしているんじゃないかと思う
0344デフォルトの名無しさんNGNG
>>342
いや、Map派はもともと>>318のようなことを頭に入れて話してたはずだ。
そこですでに論点がずれていたんだ。
0345デフォルトの名無しさんNGNG
>>341
みんな今必死にしらべてます。(プ
0346デフォルトの名無しさんNGNG
なんか、萎えちゃったな。
Mapとhibernateの間を取って、DBUtilsあたりにしとくか。
間取ってねーな。
0347デフォルトの名無しさんNGNG
>>346
今、100人規模のプロジェクトで、DBUtils使ってるよ。
0348デフォルトの名無しさんNGNG
たぶんJOINするたびにそれ用のクラスをどんどん生成してくれる方法あるんじゃないか。
0349デフォルトの名無しさんNGNG
表結合するときは、出力のときが多いから、そのときはMapでいい。
0350デフォルトの名無しさんNGNG
>>348
ていうか、それ無しではO/Rマッピングツールの意義を問われかねない
今後のO/R派の書き込みに期待だ。
それまではcommonsで我慢だ。どっちにしろMapは嫌だから。
0351デフォルトの名無しさんNGNG
>>346
めんどい更新処理はHibernate使って、複雑なSQLの出力はDBUtils。
どっちかにする必要もないわけで。
Hibernateでまかなえれば、それに越したことはないんだけど。
0352デフォルトの名無しさんNGNG

おい、OR派出て来てくれよ!

マジでJOINはどうしてんのさ 煽りじゃないよ

おしえてくれ

出来ないのならマジで意味ないんですけど・・・

JOINって使いますよね?みなさん

318のやり方でやるの?

いみないっすよ
0353デフォルトの名無しさんNGNG
>>351
んなことするならPreparedStatementでいいと思うが…
ソース内での手間はかわらんし。サニタイスもしてくれるし
0354デフォルトの名無しさんNGNG
結局DBにはSQLが一番マッチしているのだろうか?
ORマッピングツールの記事を
「SQLなんてもう書きたくない」
っていう見出しと一緒になっている
てっきりJOINとかは当たり前に出きるんだろうなと思ったわけよ
あるいは自分であらかじめViewとかつくっとけってことなのかな?
それならそれでOKなんだが
Viewも扱えないようじゃORマッピングにして逆に複雑にしているだけだと思う
0355デフォルトの名無しさんNGNG
>>354

データベースを扱うプログラミングにマッチしているのは、
型宣言しなくていい言語だと漏れは思う。
0356デフォルトの名無しさんNGNG
今はできないにしても、HQLみたいなのができるんなら、あらかじめ
HQLで書いたクエリから結果表クラス自動生成なんて難しくは
なさそうなんだけどな。
0357デフォルトの名無しさんNGNG

「JOINとかを汎用的(OOP的に)にするにはどういう風にすればいいのか?」
と考えたが、かなりムズイよね
仮想的なViewテーブルを最初からDBのほうに登録しておいて
それに対してJavaBeanつくったりとかできるんかいな?

>>353の言うようにふつうにJDBC使った方がわかりやすい
0358デフォルトの名無しさんNGNG
>>355
じゃあJavaはそもそもWebアプリに向いてないんですね・・。
0359デフォルトの名無しさんNGNG
>>356
そうだよね
ただ、反論がないところをみると現状ではそういうのって出来なさそう
0360デフォルトの名無しさんNGNG
>>357

OOPと、
DBUtilsの生成するMapを使ってデータベースにアクセスすることは矛盾しない。
0361デフォルトの名無しさんNGNG
なんでORMapを叩く方向にきてるんだ?
俺が前にhbmでmany-to-oneやるサンプル見せただろ。
0362361NGNG
それとJoinで細かく取得するやり方も否定しないから、そもそもHibernateでJDBCを
直に取り扱う事もできるし。柔軟にやりたかったらそちらを利用する。
ただ、俺だったらSpringと組み合わせてJdbcTemplateを利用する事を推奨する。

SQLExceptionが実行時例外に変換されるから、見通しが綺麗だし。
そもそもDbUtilsより色々出来る。
0363デフォルトの名無しさんNGNG
Hibernateでやりやすい箇所は>>147で書いたよ。
0364デフォルトの名無しさんNGNG
>>361
叩くというかJOINはどうやるんだ?といったまでです
で、>>318のようになるんだったら意味ないじゃんということです
多対1とJOINは関係あるの?
ちなみに煽っていないです
0365361NGNG
ごめん>>363は俺
ちなみに関連クラスを Lazy Loding する事によって起こるオーバーヘッドは
普通にHibernateのキャッシュを有効に使えば回避可能。
とりあえず、俺は2次キャッシュまで利用してるけど、かなり良い感じ。
0366デフォルトの名無しさんNGNG
>>364
だから、どういったJoinが必要になるかによる。
Joinで取得したい別テーブルのカラムがあるのであれば、hbmで
マップしておいて、オブジェクト単位で外部キーから取得する。

そうではなく、複数テーブルがかなり入りくんだJoinが必須で
あれば、Jdbcで取得後BOを拡張してsetしていくやり方が必要。

ただ、入り組んだJoinを行うかどうかは設計レベルの問題も入ってくるね。
0367デフォルトの名無しさんNGNG
>>360
DBUtilsの生成するMapを使ってデータベースにアクセスすることは、DBUtilの範囲ではできん気がする。
データベースにアクセスした結果がDBUtilsによってMapのListが生成されるから。
0368デフォルトの名無しさんNGNG
>>355
そりゃ、RDBだったらストアドが一番マッチしてるにきまってる。
型宣言があってもいい。DB自体には型宣言があるわけだから。
0369デフォルトの名無しさんNGNG
入り組んだJOINって、出力用であることが多いから、そんときゃDBUtilsで。
0370361NGNG
ごめん>>366も俺、名前入れ忘れる・・・
てことで、そもそも>>318のような書き方は普通しないと思うけど。

まあ、>>147でも書いたけど更新系や単純な更新系、BO自動生成、
キャッシングという観点からみると、かなり効果的な選択肢だと思うよ。
0371361NGNG
>>370
訂正:更新系や単純な検索系ね。
0372デフォルトの名無しさんNGNG
>>366
>通常、一つのテーブルからデータ持ってくるだけでは済まないですよね
>ある情報をSELECTしてきて、さらにIDと日本語名のマスタから
>日本語名を取り出して表示させる場合とか
>SQLだとJOINすれば済みますが

↑こんな場合です
0373デフォルトの名無しさんNGNG
リレーショナルではない条件を指定する抽出にも向いてると聞いたが。
0374デフォルトの名無しさんNGNG
>>370
番号コテである必要がないんだから、スレごとに完結させること。
0375デフォルトの名無しさんNGNG
>>370
できるのはわかったから、じゃ、どうやるの、っていうのを示してくれ。
0376デフォルトの名無しさんNGNG
>>372
それって良く使われるマスタ関連を2次キャッシュしておいて
表示時にキャッシュから取得して表示させるとか駄目なの?

SQL的には一回で済むよ。
データ量が半端なく多かったら、キャッシングの粒度は
変えないと駄目だけど。
0377デフォルトの名無しさんNGNG
>>375
たしか、前に例を挙げたと彼は言ってるけど
検索しても見つかりません
番号とか教えてください
0378デフォルトの名無しさんNGNG
>>376
うん、言ってることがなんとなくわかった
0379361NGNG
とりあえずHibernateのJoin関連はここ見ると分かりやすいかも

http://www.hibernate.org/hib_docs/reference/en/html/collections.html
0380361NGNG
て、全然説明になっていませんか?
0381デフォルトの名無しさんNGNG
>>379
>outer-join="true|false|auto"
おお!JOINあるじゃん やってみます
0382デフォルトの名無しさんNGNG
>>379
それって日本語訳のページってあったよね
0383デフォルトの名無しさんNGNG
>>382
あれ古すぎです。
0384デフォルトの名無しさんNGNG
日本語版はこれ?
章番号違うけど

ttp://www.ozacc.com/library/java/hibernate/doc/html/collections.html
0385361NGNG
最近だったら、はてなでやってるHibernate入門記が分かりやすくて
オススメです。
0386デフォルトの名無しさんNGNG
スレの勢いが落ちたわけだが
0387デフォルトの名無しさんNGNG
>>386
必死に勉強中(プ
0388デフォルトの名無しさんNGNG
何があったんだ?今日の流れを簡単に説明してくれ。
0389デフォルトの名無しさんNGNG
>>388

Q,HibernateでJOINできるのか?
A,できる

じゃ勉強します
0390デフォルトの名無しさんNGNG
iBATISでいいじゃん
0391デフォルトの名無しさんNGNG
>>388
Map万能、アクセッサのみのクラス嫌いの、自動生成くそくらえな人が現れました。
それに対して、静的保証の重要性を説きました。
例としてHibernateがよくでました。
>>47で、JOINの場合静的保証どころか名前もつけれてないということが例示されてました。
Hibernate使えねぇという空気が流れます。
そこに現れたのが>>361でした。
そして今は、みんな勉強中。
0392デフォルトの名無しさんNGNG
なるほどよくわかる経緯説明だ
乙!
0393デフォルトの名無しさんNGNG
>>47が勉強してサイト書き換えたところで今回の流れは完結です。
がんばってね。
0394デフォルトの名無しさんNGNG
>>391
乙、なんかTorqueの時も似たような事あったな。
0395デフォルトの名無しさんNGNG
まだまだ発展途上だからな。
法則どおり、バージョン3になったら非常に便利に使えるはず。
0396デフォルトの名無しさんNGNG
はっはっはっは〜
何でも聞けおれに
0397デフォルトの名無しさんNGNG
>>396
辻ちゃんと加護ちゃんどっちが好きですか?
0398デフォルトの名無しさんNGNG
>>396
Hibernateで画像を回転させるには、どのようにアプレットを作ればよいですか?
0399デフォルトの名無しさんNGNG
辻!
最初から辻!
0400デフォルトの名無しさんNGNG
>>399
加護ちゃんがやせててもですか?
0401デフォルトの名無しさんNGNG
プロパティーファイルに
JAVA_3D_HOMEを設定する
0402デフォルトの名無しさんNGNG
燃料が切れたか
0403デフォルトの名無しさんNGNG
そうだ>>400
0404デフォルトの名無しさんNGNG
というか、HibernateでJOINができるらしいということで、一安心。
0405デフォルトの名無しさんNGNG
結局「joinときはこうやれ!」みたいのはまだないわけね?
0406デフォルトの名無しさんNGNG
>>403
ののが太ったら、HibernateとTorqueのどっちを使いますか?
0407デフォルトの名無しさんNGNG
ていうかここ2スレ目だろ
おまえら今まで何やってたんよ
0408デフォルトの名無しさんNGNG
>>405
どうも、悲しいかな・・・勉強してくださいってことらしい・・・
もうさ、「え〜?」って感じ
だれか解説してくれたら
乳首くらいみせてもいいんだけどぉ
0409デフォルトの名無しさんNGNG
>>406
迷うなぁ ちくしょう 時間くれ
0410デフォルトの名無しさんNGNG
>>408
乳輪に毛は生えてますか?
その場合、英語のサイトを読むのがつらくありませんか?
0411デフォルトの名無しさんNGNG
生えてませんし
今後も生えません

英語のサイトはエロなら読み倒す
0412デフォルトの名無しさんNGNG
ジンガイのパイ毛は半端ではないからな
0413デフォルトの名無しさんNGNG
>>408
そうでしたら、手鏡には気をつけるとして、このサイトのCreating Hibernate Persistence Objectsのところがbeanの参考になりそうです。
ttp://www.meagle.com:8080/hibernate.jsp
0414デフォルトの名無しさんNGNG
急に落ち着いたね
0415デフォルトの名無しさんNGNG
ん?じゃあ、今までHibernateマンセーだったヤシらは、
どんなソースを書いていたんだ?
0416デフォルトの名無しさんNGNG
>>415
幸いJOINした結果をごちゃごちゃすることがなかった。
なっちが卒業しても泣かずにすんだ。
サーブレットからJSPに渡すときはDBUtilsを使っていたのでそのまんま。
0417デフォルトの名無しさんNGNG
つまり、ちょっと使ってみたら楽しかった。
まさか警察に通報するとは思わなかった。
0418デフォルトの名無しさんNGNG
>>416
JOINするときは>>47みたいにしてたってこと?
それでよく今まで型保証がどうのと言ってたもんだ…
てか>>361がいなかったら終了だったからな
0419デフォルトの名無しさんNGNG
>>418
型保証のときは、基本的にHibernateとは独立した話
0420デフォルトの名無しさんNGNG
JOIN程度で大騒ぎになるんじゃ、「大規模プロジェクト」が聞いてあきれるよね
みんなオモチャとしてつかってただけなんじゃん
0421デフォルトの名無しさんNGNG
なんかHibernateだとよくわからんのだが、テーブルのJOINって

Book
+--authorID
+--title

Author
+--authorID
+--name

とかいうテーブル構造で、BookのインスタンスからAuthorの
nameを取り出す場合ってことだよな。

 すくなくともWebObjectsのEnterprise Objectsフレームワークだと各テーブル間の
リレーションをちゃんとセッティングしておけば、

 String name = (String)book.valueForKeyPath( "author.name");

 で一発で取ってこれるぞ。ほかのも似たようなもんじゃないのか。
 そういうことじゃないのか?
0422デフォルトの名無しさんNGNG
Hibernateだと

String name = book.getAuthor.getName();
0423デフォルトの名無しさんNGNG
>>421
そうなんじゃないかな〜って言う理解で俺は判断した
多分そういうことだろ?Hibernateって
0424デフォルトの名無しさんNGNG
すまん

String name = book.getAuthor().getName();
0425デフォルトの名無しさんNGNG
>>422
納得
で、そのリレーションが
キャッシュとかあるいは遅延とかできるってことなんではないかと思う
0426デフォルトの名無しさんNGNG
だね。
0427デフォルトの名無しさんNGNG
DB側でちゃんとFK使ってる場合はそうかも。
でもそうでない場合も多い。
0428デフォルトの名無しさんNGNG
え?DBがわで外部キー設定しないとダメなの?
設定ファイルだけじゃダメなんですか?
マンドクサイなぁ〜
0429デフォルトの名無しさんNGNG
ていうか、FK設定すべきものは設定すべきだと思うけど
(これ、型安全性の議論にも通じるね)

INNER/OUTER/LEFT/RIGHT JOINの類の結合条件は別にFKだけとは
限らない
もっとはるかに一般的な、「N個の表から新しい結果表を作る」
機能なんだから。

Hibernateのは、FKをベースに、DB表の親子関係をObject木に見えるように
構築してくれてるだけでしょ。これはJOINと同じものではないよ。
0430デフォルトの名無しさんNGNG
結合、積、差、射影、選択なんてRDB理論の基本なんだから
それがどうマップされるか分からないんじゃ
怖くて使えないよね。
0431デフォルトの名無しさんNGNG
>>429=>>430
ちなみに俺は>>100だけど、意図的に煽りをやっていた自分意外にも
「Map信者」が多くて驚いたYo (w

0432デフォルトの名無しさんNGNG
しつれい
リンクのはりかたがヘンだったな
>>429>>431は = >>100です
0433デフォルトの名無しさんNGNG
以外と意外の区別もつかないやつが多くて驚いたYO(プゲラッチョ
0434デフォルトの名無しさんNGNG
2chでスペルミスの指摘して喜んでるやつってまだ居るんですね
珍獣認定させていただきます。
0435デフォルトの名無しさんNGNG
で、「大規模システム」的に、性能はどうなんでしょうか?
適切な選択や射影が行えないために参照性能が低下してるなんてことは
ありませんか?
JOIN一発で済むことに、何度もSELECTが発行されている、なんてことは?
0436デフォルトの名無しさんNGNG
システム屋がDBを扱う以上はSQLのチューニングという問題は
出てこざるを得ません
「大規模システム」なら当然ですね
NOT EXISTSでやればいいのにNOT INを使ってる、みたいな
初歩的な問題も結構見られますしね
0437デフォルトの名無しさんNGNG
ちなみに型安全性の問題ですが、Mapベースで構築した場合は
「柔軟であるがゆえに仕様変更に強い」という特徴があります。
つまり、コード変更をせずにシステム変更に対応できる可能性が
高いんですよ。
この場合、「Unitテストが必要」どころか、コードに対するテストなんて
要らない訳です。
頻繁に仕様変更やカスタマイズが発生する業務系においては
これはクリティカルな問題だと思いますがね。
0438デフォルトの名無しさんNGNG
>>435
だからキャッシュを効果的に利用するって言ってるじゃん。

大規模システムを何故出してるかわからんが、EJB3.0でHibernateに近い
イメージが想定されてる事からも、EJBの策定チームは問題無いと判断
してるんじゃないの?

あとFKの話が出てるけど、DBでFKが設定されてようがいまいが
Hibernateはhbmファイルで判断するから関係無い。
うまくhbmファイルを書けてるかどうかだけが問題。
0439デフォルトの名無しさんNGNG
>>435
>>1-4あたりにパフォーマンス比較のリンクなかった?

0440デフォルトの名無しさんNGNG
>>438
あ、大規模システムってのは、「Mapなんか使ってらんねー理由」
としてそれが挙げられていたからですね。
ただの信条上の問題ではなく、ビジネス的に切実な問題になる
可能性があるケースが、それであると。
0441デフォルトの名無しさんNGNG
>>436
だからEJBでBMPとCMPが併用されていたように状況に応じて使い分ければ良い。
クリティカルな部分は普通にJDBC直で取り扱えば良いだけなんだから。

ただ、すべてが大変なSQLとは限らないでしょ。要はそういうこと。
0442デフォルトの名無しさんNGNG
>>437
> つまり、コード変更をせずにシステム変更に対応できる可能性が
> 高いんですよ。

Map使った場合にコード変更が必要なところが、ORマッピングだと変更しなくて済む可能性がある。
ex フィールド名変更
責任範囲が変わるだけ。
0443デフォルトの名無しさんNGNG
>>439
なんせはてなの日記に過ぎませんし、本人が

> この数字,信用するかは自己責任でお願いします.観測者であるアタシ以外に,
> この値が役立つ人がいるとは思わんが.なにせ測定環境とか明記してないし.
> #検証コードは恥ずかしくて,とても公開する気にはならんが.:-D

なんてことを書いてる訳ですから、まともなシステム屋ならこれを信用
できるとは思えませんが?
0444デフォルトの名無しさんNGNG
だからが多くなっちゃった。

とりあえず、もうMap云々の話はやめようよ。くだらない。
0445デフォルトの名無しさんNGNG
みんな一般論になると強いな。(・∀・)
0446デフォルトの名無しさんNGNG
>>438
>あとFKの話が出てるけど、DBでFKが設定されてようがいまいが
Hibernateはhbmファイルで判断するから関係無い。
うまくhbmファイルを書けてるかどうかだけが問題。


よかったそれが知りたかった
0447デフォルトの名無しさんNGNG
>>443
私にはあなたが頭ごなしに否定したくてしょうがないように見える。
0448デフォルトの名無しさんNGNG
>>442
> フィールド名変更
これは、Mapならコード変更は要らないでしょう。
無論、そのフィールドに対して実際に意味のある仕事が必要なら、
コード変更は必要でしょうが、jspとの間をスルーする程度なら、不要ですね。

逆に、型安全性の世界では、そういう場合にこそコード変更は
必須じゃないんですか?
0449デフォルトの名無しさんNGNG
>>438>>361だな。
0450デフォルトの名無しさんNGNG
ちょっとしずかにしてもらえませんか。
さぁ盛り上がってまいりました
0451デフォルトの名無しさんNGNG
>>361を悪く言う奴は俺が許さん!
0452デフォルトの名無しさんNGNG
というか>>361とMap信者の話の次元が違いすぎる。
0453デフォルトの名無しさんNGNG
>>435
>>436
についての回答は、いかがでしょうか?
0454デフォルトの名無しさんNGNG
>>435>>436は単なる馬鹿DBAだろ?
0455デフォルトの名無しさんNGNG
いえ、私は「Map信者」だそうですが?
バカの根拠をお教えください。
あなたはSQLのチューニングを行わないのですか?
いかに最近のDBMSの最適化されたクエリアナライザでも、そうそう
賢いものではありませんよ。
0456デフォルトの名無しさんNGNG
俺は454じゃないが、>>441が答えになってないの?
0457デフォルトの名無しさんNGNG
>>448
そのフィールドを参照するすべてのJSPでコード変更が必要だろ。
ORならマッピング先のフィールド名が変わるだけ。
Hibernateなら、XDocletのタグが変わるだけ
0458デフォルトの名無しさんNGNG
うーん。適材適所論は中庸で賢そうですが
あまり美しくない気もするんですが。
メンテする人の立場になると、実装形態やクラスが分散されるのは嫌でしょう。
0459いなむらきよしNGNG
キケー!
0460デフォルトの名無しさんNGNG
>>458
っていうか、適材ではないものを無理やり使ってるほうが、メンテ大変。
0461デフォルトの名無しさんNGNG
>>457
なるほど、DBのカラム名だけが変わった場合に、もとと同じ名前にマップ
する訳ですね。確かにMapならjspは変更が必要でしょう。が、そういう
ケースはレアなのではありませんか?

カラムが追加された場合はどうですか?
0462デフォルトの名無しさんNGNG
>>460
Mapを使う方法はレガシーであるというだけで、別に適材じゃないとは
思いませんが。
0463デフォルトの名無しさんNGNG
反対してる人達は、そもそも触ったり本家のドキュメント読んだ事あるのかな?
0464デフォルトの名無しさんNGNG
つうか「レガシー」ってよく聞くけど
単語の意味も使い方もわkらん 誰か解説してくれ
0465デフォルトの名無しさんNGNG
>>464
直訳だと「遺産」ですね
なんか古くてボロっちいの
ラッパーが必要な奴
そういう意味で使われることが多いですが

ベンダが「新しい製品を買ってくれ」という意味で使ってるだけのことも
多いです
0466デフォルトの名無しさんNGNG
どもです
0467デフォルトの名無しさんNGNG
>>461
カラムが追加される、ということは、エンティティの性質自体が変わるわけだから、ロジック自体に影響がある。
それに伴ってコード変わるだろ。

それとも、セッターゲッター新たに書く必要があってコードが変わるだろ、Mapならそこに関しては関係ないみたいな、くだらんレベルの話?
0468デフォルトの名無しさんNGNG
ちなみにMap信者の私は「何でもテキスト」「ファイルはただのバイト列」
のUnix文化マンセーですね。テキストは便利ですよ。同じ方法で
透過で扱えますからね。

メインフレームはほんのちょっとしか触ったことがありませんが
データセットにレコード長その他の様々な属性があり、これがもう
RDBの物理設計をやるのと同じなワケです。ただのファイルなのに。
0469デフォルトの名無しさんNGNG
>>464
古くから普及していて、今でも使われている、という感じ。
0470デフォルトの名無しさんNGNG
>>467
そういう「くだらんレベル」は重要でしょ?仕事でやってんなら。

コーディングが発生するかどうか、テストが発生するかどうか、
カスタマイズや仕様変更に対する柔軟性はどうか

で、カラムが追加されても、たんに右から左に流すだけでロジックの性質には
変化が無い、といったケースは意外と(というかかなり)多いはずですよ。
0471デフォルトの名無しさんNGNG
>>470
うん、じゃあ、カラムが追加された場合は、Bean変更する必要があってめんどくさいね。
ORマッピングのよさは、DBの変更がマッピング部分に集中できる、ってことで、変更点が減るわけじゃないからね。
フィールド名が変わった場合もマッピング部分は変える必要があるわけだし。
0472デフォルトの名無しさんNGNG
10人以上のプロジェクト回した事無いんでしょどうせ。
それか異常に時間をもらえてるとか。
0473デフォルトの名無しさんNGNG
Mapを使った時のアンチパターンとか読んだ事ないんだろうなぁ・・・と思う。
0474デフォルトの名無しさんNGNG
10人ぐらいだと、SE、運用、保守、画面屋、etc...でロジック書く奴なんて
数人だから余裕ですね
0475デフォルトの名無しさんNGNG
で、あなたはどれぐらいの大規模システムにHibernateを導入してる
んですか?
0476デフォルトの名無しさんNGNG
>>473
ええ読んだことありませんね。
型安全性が無い点も理解してますし、その問題も分かってるつもりですが
一方その便利さも理解してます。
で、EJBでは大げさすぎるがMapの型安全性の無さが問題になってくる
領域の幅ってのは、どれぐらいなんでしょうかね。
0477デフォルトの名無しさんNGNG
>>474
ごめん実装者が10人以上ってことね。
0478デフォルトの名無しさんNGNG
>>476
画面数1桁以内程度かな?
0479デフォルトの名無しさんNGNG
>>427
ロジック書く奴が10人以上ということは、億単位でしょうか?
そういうのにこういう怪しげな奴を突っこむ度胸は私には無いですね
あなたは、そういう案件に実際に適用してるんですか?
0480デフォルトの名無しさんNGNG
>>478
その程度ならMapで余裕でしょ
つか一人で作れるでしょ

まあ画面の中で何か膨大な仕事をやってるんなら別ですが
0481デフォルトの名無しさんNGNG
Hibernateって怪しげなの?
0482デフォルトの名無しさんNGNG
>>481
ソースに目を通して自分でどうにかする根性があれば、怪しくないでしょうね

でも億単位の案件なら、ベンダの製品サポートが存在する(責任をなすり
つけられる)ことは、非常に重要でしょ。
0483デフォルトの名無しさんNGNG
ベンダーのフレームワークって当たり前にOR/Mapper提供してると
思ってたんだけど、間違えてるかな。
そこら辺のフレームワーク使ったプロジェクトで結構億単位のものは
多かったような。
別にHibernateだけの話じゃないよね、ここって。
0484デフォルトの名無しさんNGNG
Hibernateは全然怪しくないし、サポートは頼めばJBossでやってくれる
んじゃないの?
0485デフォルトの名無しさんNGNG
まあ、ここは新しもの好きが集まるところだからね。
0486デフォルトの名無しさんNGNG
>>482
はい
http://www.hibernate.org/148.html
0487デフォルトの名無しさんNGNG
>>486
ええと、これ実際に利用してる方、いますか?
適用例とかがあれば是非伺いたいものですが。
0488デフォルトの名無しさんNGNG
いや、わからんけど、不安だったらこれを使えば良いのではって話じゃないの?
日本での知名度は分かりきってる話だし、ここではそれを前提において話を
しているわけでしょ。

あなたが本当にプロジェクトを自分のスキル範囲で確実に成功させたいので
あれば、今までのやり方でやるべきだと思うよ。
0489デフォルトの名無しさんNGNG
今やる理由はHibernateが本格的に流行りだした時点で、自分達が熟練した
利用者になっているか、なっていないかの違いだと思う。
0490デフォルトの名無しさんNGNG
文章変だ。
熟練した利用者になるため。に読み変えといて。
0491デフォルトの名無しさんNGNG
>>476
怖いのは、分かってるつもりと理解してるはず。
0492デフォルトの名無しさんNGNG
>>483
EJBじゃない?

ORマッピングフレームワークっていったときには、EJBやMapはとりあえず含まれないと思う。
0493デフォルトの名無しさんNGNG
米国のもっと有名どころの良く知られた製品だって、日本国内に
代理店とサポート拠点がなきゃあ、使うのに躊躇するぞ。
0494デフォルトの名無しさんNGNG
>>479
Mapでやるのもいやだけどな。
それなりに評価して適用すればいいんじゃないの?
「怪しげ」だからと評価もせずに便利そうなツール使わないのはもったいないし。
0495デフォルトの名無しさんNGNG
おれがおれがのお山の大将ばっかやな
0496デフォルトの名無しさんNGNG
>>492
EJBはSLSBで、DAOはフレームワークで提供ってベンダーもあるよね。
0497デフォルトの名無しさんNGNG
まあ、今更JDBCでしこしこupdate文書きたくないよって事で。
0498デフォルトの名無しさんNGNG
ていうかこの人おもしろいよね。
実装に関することでかなわなければ、「億単位のプロジェクトでつかえるのか」って。
そんなん要件によって評価するだけだから、場合によって変わるのに。
0499デフォルトの名無しさんNGNG
>>498
>>454
0500デフォルトの名無しさんNGNG
とりあえず、新しいものに関しては「実績は」っていっとけば、答えに窮するしね。
0501デフォルトの名無しさんNGNG
>>47修正マダー
0502デフォルトの名無しさんNGNG
>>498
ちょっと違いますね。
ちょっと突っこむと
「RO-Mappingが有効かどうかは要件による」
という話が出てきますので、その有効な要件は具体的にどんなだ
と聞いてるだけですよ。
0503デフォルトの名無しさんNGNG
立って1ヶ月で100行くのか危ぶまれるくらいだったスレが、一気に500。
燃料が入るとよく燃える
0504デフォルトの名無しさんNGNG
>>502
でその答えがでてきたら、Mapで十分と返せばいいってわけですね。
大した燃料です。
0505デフォルトの名無しさんNGNG
で、ここまでの流れはどうなってるの?
0506デフォルトの名無しさんNGNG
>>504
答えって、>>478とかですか?
いえ、あの程度なら一人でやれるプロジェクトですから、
「型安全性は保証しとかないと多人数のプロジェクトはやってけんぞー」
という他の声とは矛盾している訳です。
0507デフォルトの名無しさんNGNG
>>497
そんなものは普通一回書いたら終わりですね
Mapを使うにしても
0508デフォルトの名無しさんNGNG
>>507
現実はスキーマがちょくちょく変わるって話と矛盾する。
0509デフォルトの名無しさんNGNG
>>508
いえ、UPDATE文はMapを使う場合は動的に作るでしょう。
ですので、「一回書いたら終わり」は、executeUpdate()を実行する
コードですね。
0510デフォルトの名無しさんNGNG
>>506
100以降、何度も、こういう場合はHibernateが楽でいい、とかいろいろ出てるよね。
0511デフォルトの名無しさんNGNG
?、キーがそのままカラム名になっちゃうの?
0512デフォルトの名無しさんNGNG
>>510
で、あなたの見解はどうなんですか?
0513デフォルトの名無しさんNGNG
>>509
用意したデータだけ更新するような場合に限るんじゃないの?
それならHibernateならそもそも用意されてるからなにも書かなくても終わり、ってことになるよ。
データ取得しながらその結果を元に更新する場合とかはめんどくさいと思うんだけどなぁ。
0514デフォルトの名無しさんNGNG
>>511
普通そうするでしょう。
キーとカラム名のマッピングを設定ファイルに落として変換するのも
別にどうということもありませんね。
0515デフォルトの名無しさんNGNG
>>511
それで十分らしい
0516デフォルトの名無しさんNGNG
>>513
HibernateはSELECT FOR UPDATEによる行ロックをサポートしているのですか?
0517デフォルトの名無しさんNGNG
>>511
あ、この人は、自分のまわりに起こってることは他の人のまわりにも同じように起こってると思ってるらしい。
0518デフォルトの名無しさんNGNG
キーの変換も機械的にできるし更新対象カラムを絞るのも簡単ですよね
Mapの名前ベースのスキームは設定ファイルとの相性が極めていいのが
強みです。
特殊化されたコードは一行も書く必要がありませんね。
0519デフォルトの名無しさんNGNG
キーにカラム名を使うなんて、まるっきりScriptだな。
0520デフォルトの名無しさんNGNG
>>518
あんた、笑われてるよ。
0521デフォルトの名無しさんNGNG
>>516
普通してる。
0522デフォルトの名無しさんNGNG
>>519
で、それの何が具体的に悪いのですか?
>>520
どうぞ。
0523デフォルトの名無しさんNGNG
>>521
それは、transactionのisolation levelの設定によって、ですか?
ちょっと興味があります。
0524デフォルトの名無しさんNGNG
>>516
ttp://www.hibernate.org/hib_docs/reference/en/html/transactions.html

> LockMode.UPGRADE may be acquired upon explicit user request
> using SELECT ... FOR UPDATE on databases which support that syntax.
0525デフォルトの名無しさんNGNG
>>522
あんたのは型付けのしっかりしているJava言語仕様を自分なりに
歪曲して理解しているだけ。
あんたの中で整合性が取れていても、他の人には俺様以外の何者でもない。

この解釈は間違えてる?
0526デフォルトの名無しさんNGNG
つうか、Hibernateのリファレンスぐらい嫁。読みやすいぞ。
0527デフォルトの名無しさんNGNG
>>525
そんなこというと、ベックが引用されるぞ。
0528デフォルトの名無しさんNGNG
>>525
えーと、Mapを使うかDynaBeanを使うかPOJOを使うかというのは、
Java言語仕様とは全く関係のない、プログラミングスタイルの
問題ですね。
どれもこれも「Java言語仕様」の範囲にあるクラスでありオブジェクト
なのですから。
0529デフォルトの名無しさんNGNG
あ、別に私はSmalltalk信者じゃないですよ(w
型安全性とオブジェクト指向を同列に論じている人を見ると
奇特な方だなあとは思いますが。
0530デフォルトの名無しさんNGNG
>>528
お前はお前で自身を持ち過ぎ。もうちょっと時代の流れを読め。
0531デフォルトの名無しさんNGNG
>>529
スレ違いに気づいていますか?
0532デフォルトの名無しさんNGNG
>>524
なるほど、クエリとしてSELECT FOR UPDATEを明示的に指定すれば
行ロックモードが獲得されるということですか。
Hibernateにおいて実際に使う場合、テーブル・オブジェクトに対して
常に二種類のSELECT文を定義する必要があるということですか?
0533デフォルトの名無しさんNGNG
>>531
どこらへんが?
0534デフォルトの名無しさんNGNG
>>533
Java⇔RDBのMapping-Frameworkを語るスレ

別にくだらないMap主義について語るスレではない。
0535デフォルトの名無しさんNGNG
>>534
本当に私の発言が「無関係」だとでも思ってるの?
ま、「退屈だ」と思うのはしょうがないよ。でも、それはスレ違いとは
また別の話だよね。
実際には関係があるからこれだけスレが伸びている訳です。
0536デフォルトの名無しさんNGNG
>>535
お前意図的に釣ってるだろw、むしろ関係なさ杉
0537デフォルトの名無しさんNGNG
>>535
伸びたスレの内容がどうしようもない訳です。
0538デフォルトの名無しさんNGNG
>>537
まあそれは私一人の責任ではありませんので、あしからず。
0539デフォルトの名無しさんNGNG
>まあそれは私一人の責任ではありませんので、あしからず。

だそうです、終了。
0540デフォルトの名無しさんNGNG
やはり RDB は滅ぶべき技術だな。
0541デフォルトの名無しさんNGNG
そう。ファイルで十分。
っていうか、電源いれっぱなにしとけば、それすら必要ないじゃん。
0542デフォルトの名無しさんNGNG
30GBくらいメモリつんで、電源確保。
信頼性や容量確保したければ、台数用意して、P2P分散データベース。
なんだ。
ファイルもXMLもRDBも必要ないね。
0543デフォルトの名無しさんNGNG
コテつけてよぉ
アボソできないじゃん
0544デフォルトの名無しさんNGNG
>>542
みな枠からはみ出れないもんですよ
0545デフォルトの名無しさんNGNG
オブジェクトデータベースとかを
下手に新し物好きが採用すると
大体泣きを見ますからね
0546デフォルトの名無しさんNGNG
データの配置がメモリかストレージかという話と、RDB使うかどうかは
全然別の話じゃないのかね。
このままいったら、配列があれば良いって話になっちゃうぞオイ。
0547デフォルトの名無しさんNGNG
>>543
Map信者は私一人ではないようですよ(w
0548デフォルトの名無しさんNGNG
>>542
Google 的だね。
0549デフォルトの名無しさんNGNG
>>542
それ、ソフトのアップデートとかで泣きを見ませんか?
0550デフォルトの名無しさんNGNG
>>549
マジレスは厳禁です。
0551542NGNG
>>549
しかたないから、レジューム時だけディスクに書き込む。

っていうか、548のいうとおりGoogleなわけさ。
なので、Googleに聞いてくれ。
0552デフォルトの名無しさんNGNG
>>547
盲目的にMapがいい、って言ってるのはひとりだけな気が。
あと、Hibernateどうよ、っていう意見がすなわちMap信者というわけでもない。
0553デフォルトの名無しさんNGNG
値同士にややこしい関係が必要ないなら、永続化可能な単純な
マップというのは、必要十分なソリューションである気がするが。
0554デフォルトの名無しさんNGNG
>値同士にややこしい関係
曖昧すぎ
0555デフォルトの名無しさんNGNG
テーブルの結合の仕方によっちゃ似たような名前のクラスいっぱいできるだろうし、
そうなるとクラスローディングのコストもバカにならないんちゃうかな。
0556デフォルトの名無しさんNGNG
>>555
そんなもん、データ自体のオブジェクトに比べれば盗るにタリン
0557デフォルトの名無しさんNGNG
>>555
ってか、もしかしてJOINの組み合わせごとにマッピングクラス作るつもり?
0558デフォルトの名無しさんNGNG
Hibernate良さそう→でもよく分からん→こいつら俺の分からんこと話やがって→Map厨誕生
05591NGNG
前スレ、当スレの1です。
すげー伸びに驚愕してまつが。。。

メリットとデメリットの両方があるので、適用したいプロジェクトに
うまくハマるかどうかの見極めが重要だと思います。
漏れ、直近のプロジェクトでHibernate2.1.3を使ったんですけど、
途中で、微妙にテーブル構成が変化することが多い、最初の設計が
ややゆるめ(悪い言い方をすれば、仕様が曖昧)なものだったんですが、
マッピングされたbeanを使うアプリ側の変更がほとんどしなくて済んだので、
こういう場合には有効かなと思ってます。

あと、jFaceDbcとかHibernate SyncronizerなんかのEclipseプラグインを
使ってマッピングクラスを自動生成すると、かなり楽でした。
んで、マッピングクラスのgetter系メソッドを結構修正することが多かったんですが、
extendして使うと更に使いやすい。
これは、Cayenneでは標準的な使い方ですよね。
0560名無しさんNGNG
>>559
> これは、Cayenneでは標準的な使い方ですよね。
Generation Gap パターンすね。モデリングツールからクラス自動生成するときに
勝手にやってくれるんで、えらい便利です。
エンティティに自分でコード書いて「振る舞い」持たせても、後からの
クラス自動生成に一切躊躇しなくていいんで。

Cayenne1.1 ではさらにエンティティに継承関係を持ち込むことも出来るらしく、
「リレーショナルな世界の親子関係って気持ち悪いなあ...」と思ってた自分には
かなり朗報で、これから試してみようと思ってます。
http://www.objectstyle.org/cayenne/modelerguide/modeling-object-layer/inheritance.html
0561デフォルトの名無しさんNGNG
Mapを使うとそもそもツールを使う必要すらない、とか、途中でテーブル構成が変わるなど問題外、とか、そういう意見でないかなぁ・・・
0562デフォルトの名無しさんNGNG
日本語資料が揃ってきたらカイエンがメジャーになりそうな気がするんだけど、Hibernateと比べるとどうなんでしょ。
Torqueはなんだか落ちぶれてきて、OJBは出遅れてて、JDOは鳴かず飛ばず、という印象があるんだけど。
0563デフォルトの名無しさんNGNG
>>562
Cayenne のサイトからリンク貼られてたこんな blog が。
http://www.theserverside.com/blogs/showblog.tss?id=CayenneAndHibernate

Cayenne のサイトからリンク貼られるくらいだから、どちらかというと
Cayenne よりの内容なんですが、一読の価値はあるかも。
結局みんな EOF に憧れてるわけなんだなーとか(笑)

# WebObjects 買ってもらったものの、まだまだ
# Cayenne が楽しくて WO 触ってない人
0564デフォルトの名無しさんNGNG
>>561
なぜMapじゃない手法が求められてるかをしっかり勉強しなさい。
自分の知識だけで判断してたらスタート地点にすら立てない。
0565デフォルトの名無しさんNGNG
>>564
お前は文章を読む力を付けような。
0566デフォルトの名無しさんNGNG
急にスレの勢いが止まったようだが
0567デフォルトの名無しさんNGNG
みんな、HibernateでのJOINとCayenneの勉強してます。
0568デフォルトの名無しさんNGNG
Mapマン敗北
0569デフォルトの名無しさんNGNG
Cayenne
ロゴがApacheっぽいのでパクリかと思った
0570デフォルトの名無しさんNGNG
Cayenneたのしそう
0571デフォルトの名無しさんNGNG
今更だが、Hibernateだったらdynamic-componentでMapにも対応してるよ。
0572デフォルトの名無しさんNGNG
>>570
楽しいっすよ。楽しいし、何と言ってもラクチン。
もはや生の JDBC とかまったく触る気しないです。
最近ではちょっとしたツールで2〜3テーブルしか触んないようなのまで
Cayenne 使っちゃったりして。
そうなるともはや RDBMS を「単なる便利な永続化層」としてしか
使ってないですが、それはそれでいいんじゃないかと思ったりしてます。
RDBMS ありきでなく、オブジェクトをいかに効率よく永続化するか。
ODBMS 使えつー話のような気もしますが、使ったこと無くて分からんです...
0573デフォルトの名無しさんNGNG
というかMapって、初めて概念を知ると何でもそれでやりたくなるよね。
で、
MapのKeyをそのときそのときで手打ちはよくないから定数化しよう
→Mapのための定数をまとめてクラス化しよう
→せっかくだから定数クラスにMapを継承させて
振る舞いも含めてクラス内に閉じるようにしよう
→クラス内に閉じてるんだからアクセサを定義してget(Clazz.FOO)から
Object getFoo()みたいな形でアクセスできるようにしよう
→アクセサだってメソッドなんだから内部で型チェックとキャストを
行うようにして Foo getFoo()みたいな形でアクセスできるようにしよう
→…アレ?
ってな感じで夢から覚めると。

keyをまともに管理しないと立ち行かなくなった辺りで得失が逆転して、
そこから先はBeanにしたほうがトータルで楽になると思われ。
0574デフォルトの名無しさんNGNG
この前の、JOINの話だけど、 many-to-one と HQLの inner join
使えば綺麗にSQL一回でいけない?
0575デフォルトの名無しさんNGNG
>>568
まあさすがに煽りも飽きたというか、ネタがね……
>>572
ODBMSは遊びならいいけど仕事なら勧めない
>>573
さすがに
んなことやってる奴はいないと思うけどね、君以外は。

機能や振る舞いが多いかどうかでクラスを作るかどうかを
判断するのは当たり前でしょ
「便利なツールが使えるから」じゃなくて、あくまでそこにクラスやオブジェクトが
設計として抽出されるか、が本道な。
ロジックがただのフィルタやパイプラインに毛が生えたようなもので、
DBのデータを「ただのデータ」として透過で扱いたいような場合は、
Mapがしばしば便利であるというだけで。

Map使う場合は汎用的なプロセッサのようなモデルで作るから、
> MapのKeyをそのときそのときで手打ちはよくないから定数化しよう
んなバカなことはしません。
0576デフォルトの名無しさんNGNG
>>575
設計をリレーショナルにしてれば、すでにそれに対応するオブジェクトがあるわけで、それを今までは手間を考えてクラスにしてないだけ。
「便利なツールが使えるから」クラスを作る。

ROマッピングの話で、そんなこというのはナンセンスだな。
0577デフォルトの名無しさんNGNG
ただのデータというが、意味があるデータなら、クラスになりえないデータはない。
プログラムで扱うデータであれば、それはエンティティだからな。

> Mapがしばしば便利であるというだけで。

というのこそ

>「便利なツールが使えるから」

やってるわけだね。
0578デフォルトの名無しさんNGNG
ごめん、読み誤ってたみたいだ。

> 機能や振る舞いが多いかどうかでクラスを作るかどうかを
> 判断するのは当たり前でしょ

ここがそもそも間違ってるんだね。
機能や振る舞いの数は関係ない。
0579デフォルトの名無しさんNGNG
>>577
> ただのデータというが、意味があるデータなら、クラスになりえないデータはない

そもそも「意味がある」かどうかが、まず問題。
無論「業務上は」意味のないデータというのはあり得ないが、
「ロジックにとっては」意味の無いエンティティというのが実は結構
あるだろう。
そういうデータはロジックにとって透明であって欲しい訳で、
型やメンバといったものは一切気にしたくないし、
同じ方法で扱いたい。

要はクラス分けしてる状態よりは、もっと汎化された状態で扱いたいと。
機械的にフィールド毎に単純なバリデーションを適用したり、
データをフィルタリングしたり
(例えばクロスサイトスクリプティングのチェックやUCS文字セットの
中で一部の文字をマッピングするとか)といった仕事をするだけなら
Mapが条件に適合するってこと。一切特殊化されたコーディングは
不要だからな。ただし、valueの
型が不定では実際には不便でしようがないので、こういう用途で
用いる場合、俺は全部Stringにして使う。

Mapping frameworkでも、実際に「ロジックにとって」意味のある仕事
をする場合には、自動生成クラスを継承するか、それをUseする
ロジックを実装するだろう。Mapを使う場合も無論それは同じで、
透明でない部分はクラスを作ることになる。その部分がどれぐらい
多いのか?といったバランスの問題で、Mapが実際的かどうかが決まってくると
思うんだが。
0580デフォルトの名無しさんNGNG
>>579
だめだめやな。

> そういうデータはロジックにとって透明であって欲しい訳で、
> 型やメンバといったものは一切気にしたくないし、
> 同じ方法で扱いたい。

だからBeanに型もたせて、扱う場所では型を気にせずにすむようにするんでしょが。
Mapが便利な処理をする場合はBeanUtils#describe使えばいいだけで、マッピング用のBeanが自動生成できるならBean作った方がいいし。
0581デフォルトの名無しさんNGNG
>>575
Mapを使うとしたらキーは普通自動生成で定数化しますよ。
あなたは、キーをいちいち文字列で書かせてるの?

さぞかし、スペルミスがまったくない素晴らしい人たちばっかりなんですね。
0582デフォルトの名無しさんNGNG
またMap厨か。
0583デフォルトの名無しさんNGNG
だいたいこのスレで「普通こうする」って言ってるやつは、自分がやっている方法を他の人もやっていると思ってる。
または、他の人も同じ組織のレベル、同じアプリケーションの種類、同じ規模のものを作ってると思ってる。

「普通」なんか、組織やら作るものの種類・規模によって違う。
0584デフォルトの名無しさんNGNG
Map絡みは馬鹿が一人いるからループする。放置の方向でお願い。
05851NGNG
カイエンに関して、日本語で解説されたサイトとか資料とかないっすか?
0586デフォルトの名無しさんNGNG
O/Rマッピング好きがコンパイルエラー頼りの人多いのは意外
マッピングするためのxml設定ファイルはキーワードエラーすら出ないのに
0587デフォルトの名無しさんNGNG
>>586
ん、マッピング設定の xml はツール使って DB スキーマから
リバース生成とかするんでないの?
0588デフォルトの名無しさんNGNG
>>580
valueの型が不定のMapなんぞ渡されても使い物にならんよ
0589デフォルトの名無しさんNGNG
>>581
ええと
> Mapを使うとしたら普通
ってのは、どっから出てくるんだ
脳内か?
0590デフォルトの名無しさんNGNG
>>588
使う腕がないから?
それなら、Mapにデータを持つ場合も同じ。
MapのデータをすべてStringにする、というなら、そのときに使うコンバータをBean→Mapのときに使えばいい。
0591デフォルトの名無しさんNGNG
>>590
いや、もとからMapで作る気なら最初からStringで設計するな。
だから、同じじゃないよ。
0592デフォルトの名無しさんNGNG
>>589
変数をID管理してたCOBOLerじゃないの?
0593デフォルトの名無しさんNGNG
Mapが使えるのはキャッシュくらい。
0594デフォルトの名無しさんNGNG
>>575
ODBMSはプログラミングはラク。
しかし今DBにどんなデータが入ってるかを把握するのが辛い。。
SQLの偉大さを知ったよ。。
0595デフォルトの名無しさんNGNG
ODBMSはパフォーマンスを出しにくかったり、言語に密接になってしまったりと使いづらいという印象がある。
0596デフォルトの名無しさんNGNG
>>591
Stringで設計しない、なら、valueにどんな型が入ってるかわからないわけだよね。
>>588のいう「valueの型が不定のMap」じゃないの?
0597デフォルトの名無しさんNGNG
みなさんお待ちかねのMap屋ですよ。

>>594
Object storeあたりかしら?
俺的には別にプログラミングが楽とも思えませんが……。
システム屋が普通にサポートするレベルの性能・保守・運用面を考えたら
地獄を見るだけ、でしょう。
壊れてもいい程度のデータの永続化に使うならいいかもしれませんね。
UnixのDBMの延長線みたいな感じで。ただ、それなら素直に
Berkeley DBでいいような気もしますが。pure java版のライブラリも
最近は利用できることですし、実は最近のはトランザクションや
チェックポイント、リカバリなんて機能もあるようですから驚きです。
どうせならperlのtie()風に透明に扱えるともっと便利なんですけど。

>>593
ハハハ、自分の無知をひけらかしているだけのレスですね。
コンパイラのシンボルテーブルのようなものを実装するのに
あなたはMapを使わないのでしょうか。あ、もしかしてC++の
std::mapなら型安全だから使うの?
くだらないね。
0598デフォルトの名無しさんNGNG
>>585
つくりました。

CayenneでORマッピング
ttp://www.fk.urban.ne.jp/home/kishida/kouza/cayenne.html

「日本語で書いてある」以上の意義はありません。
とりあえず使うだけ。
0599デフォルトの名無しさんNGNG
>>598
Map屋ですが、素晴らしいですな
ただ、以前Cayenneを一瞬だけ斜め読みしたときは、主キー生成部分がまだまだ
アマいのと、対応DBが不十分だったんで、その辺を書いてくれると
嬉しいのかなと。最近のはマシになってるようですからね。

ちなみにそこで挙げられてる
サンプルソースのような、Criteriaみたいなクラスを使った検索って
何がうれしいのか俺は分からないんですがね。マジで。

・どんなSQLが走るかトレースしてみないと分からない
・コードも別に全然短くない
・クエリを設定ファイルなどに切り出しにくく、明示的な
 コーディングが必要
・オンメモリにリストを作っちゃうので大量検索に向かない
・誰もが知ってるSQL構文ではなくライブラリ独自の方法の学習が必要。
 SELECT構文って本気で使うと複雑ですからね……

最悪ですね。
0600デフォルトの名無しさんNGNG
>>599
> その辺を書いてくれると嬉しいのかなと。
ま、使ってみましょうかね、という企画なので。
とりあえず使ってみれば、英語のドキュメント読む気にもなるかな、と。

> 何がうれしいのか俺は分からないんですがね。マジで。

分からないなら必要ないので使わなければいいだけの話で、使ってうれしい状況になれば何がうれしいのか分かると思うんですがね。
0601デフォルトの名無しさんNGNG
ひが氏の今回の更新がORMappingだったので
過去記事含めて貼ってみるテスト。

ダイコン時代のORM - 結果セット中心
ttp://d.hatena.ne.jp/higayasuo/20040708#1089245059
過去記事
ttp://d.hatena.ne.jp/higayasuo/20040609#1086738237

で、結果セットってのはどうよ?
俺はこういう場合はDAOでJDBC直書きでデータ抜くなりO/RMapされたBeanから値抜くなりして
Beanに詰めさせるもんで、O/RMapより一階層上のレイヤの話だと思ってたんだけども。
0602デフォルトの名無しさんNGNG
>>599
・ほとんどのSQLは、パフォーマンスで問題になることはない。
・ほとんどの問い合わせは、どんなSQLになるか興味ない。
・めんどくさいJOINを書かなくて済む
・明示的なコーディングをどっかでメソッドにして使いまわせばいい。
・烏合の衆にめんどくさいJOINを教えなくて済む
・烏合の衆が書いたSQLのtypeによる例外が減る
・オンメモリにリストを作っちゃうとは限らない。
・コード補完のおかげでフィールド名を覚えておかなくていい。
・なんにしろローカルなコーディングルールやフレームワークを作るだろうけど、そのドキュメントのメンテナンスはめんどくさい。
 有名マッピングツールなら、ドキュメントが整備されてる。Cayenneもそのうち増えるだろう。
・なんにしろローカルなコーディングルールやフレームワークを作るだろうけど、それに比べればコードは少なくなる
0603デフォルトの名無しさんNGNG
>>601
DAOとEntityを分けて考えるというスタンスだからこれはこれでアリと思われ
0604デフォルトの名無しさんNGNG
>>599
> ・どんなSQLが走るかトレースしてみないと分からない

query.setLoggingLevel(Level.WARN);
とすれば、とりあえずどんなSQLが走るかログがでます。

> ・オンメモリにリストを作っちゃうので大量検索に向かない

performIteratedQueryを使ってResultIteratorを取得すればいいらしい。
でも、チュートリアルみると、あまり嬉しくないコードを書く必要がある気配。

なんか、全体的にキャストが必要なことが多い気がする。

> ・誰もが知ってるSQL構文ではなくライブラリ独自の方法の学習が必要。
>  SELECT構文って本気で使うと複雑ですからね……

「本気で使うと複雑なSELECT」を書かなくて済むのはいいかも。
JOINがからむ場合とか。
楽ができる部分と、めんどくさくなる部分がある。
0605デフォルトの名無しさんNGNG
>>599
お前は確実に嫌われるタイプの人間だな。
自分の意見を押し付けすぎだし、書いている内容が批判中心で実が無い。

とりあえず、お前が望むレベルのOR/Mapper作ってみてくれ。
0606デフォルトの名無しさんNGNG
Map絡みはかなりスレの流れを阻害している気がする、ほんと勘弁。
0607デフォルトの名無しさんNGNG
SQLに凝るやり方は、技術者によって差が出すぎるからオススメしない。
なるべく設計レベルでうまくまとめるべき。で、PGとかではシンプルに書くと。
0608デフォルトの名無しさんNGNG
>>602
>>599は烏合の衆にSQLのテクニックを教えるのが好きなんだよ
0609デフォルトの名無しさんNGNG
>>606
ノシ 同意
0610デフォルトの名無しさんNGNG
>>602
> 烏合の衆が書いたSQLのtypeによる例外が減る
要するに、DBアクセスコードを書いておきながらテストせずに
納入しますよと言ってるのか。大笑い。
こんなこと言ってるようじゃ、
> ほとんどの問い合わせは、どんなSQLになるか興味ない。
興味がある場合をつきつめているとは思い難いね。

> なんにしろローカルなコーディングルールやフレームワークを作るだろうけど、
SQLは作るまでもなく誰でも知ってるんですが。

>>604
> 「本気で使うと複雑なSELECT」を書かなくて済むのはいいかも。
> JOINがからむ場合とか。

JOIN一つ程度じゃ別に複雑じゃないでしょ。
UNION(ALL), MINUS, JOIN(OUTER, LEFT, INNER, RIGHT),
副問い合わせ,...
等々が複雑に絡み合う可能性があるのがSELECT文。
こういうのを一々メソッドならべて書く気?

テキスト形式のSQLなら、sqlplus, osqlといったコンソールのSQLクライアント
で実行可能なSQL文をそのまま書きゃいいだけ。慣れてる奴なら見れば
やってることはすぐに分かる。
0611デフォルトの名無しさんNGNG
>>598
おつかれさまです。
GUIツールがついてるのが新鮮ですね。なんか、面白そうかも。
0612デフォルトの名無しさんNGNG
>>610
スキル依存イクナイ
0613デフォルトの名無しさんNGNG
ついでに言うと、「烏合の衆」に書かせたSQLをチェックする場合は、
まず一番気になるのはパフォーマンスが出るSQLになってるか
ということだろ。
型の例外なんぞUnit Testでチェックすりゃいい。
SQLがコードまたは設定ファイルにテキストで書かれているならば、
grepしてDBAがチェックするのは簡単なことだ。

君ら、本気で業務で使ってるとは思えない発言が多いね、ほんとに。
0614デフォルトの名無しさんNGNG
>>611
>SQLは作るまでもなく誰でも知ってるんですが。
誰でも知ってるってソースは?
0615デフォルトの名無しさんNGNG
>>613
暴走しすぎ。お前は何年前の業務開発を基準に話をしてるんだ?
0616デフォルトの名無しさんNGNG
>>614
アフォか。
CayenneだのHibernateだのの新参のクラスインタフェースを知ってる人間と
SQLという歴史のある問い合わせ言語を知ってる人間を比べる気か?

前者にくらべりゃ、後者はほぼ「誰でも」だね。
まともな会社なら新人教育で教育することだ。
ま、あんたの会社は違うかもしれないがね。
0617デフォルトの名無しさんNGNG
> 型の例外なんぞUnit Testでチェックすりゃいい。

http://d.hatena.ne.jp/higayasuo/20040708#1089245059

Typesafeでない代償は、細かいところで積み上げられ結局大きく
なってしまう。
0618デフォルトの名無しさんNGNG
>>615
今はSQLはパフォーマンスを気にする必要が無いといいたいの?
OracleでNOT EXISTをNOT INに書き換えたり、
WHERE句のカラムの順番を適切でないものに並び換えて実行して見ろっての。

どうせ、explain planやtraceなんてとったこともないんだろ?
0619デフォルトの名無しさんNGNG
個人的に SQL 直書きだと使う DBMS を変えようと思ったときにつらい。
Mapping-Framework だとだいぶそのへんを吸収してくれてうれしい。
0620デフォルトの名無しさんNGNG
>>616
なんか書き込みが一昔のCOBOL厨みたいだな。
あんたが言いたい事もわかるけど、ここはそういう要素も解消できるように
考えていこうって所じゃないの?

まっさらなSQLだけで攻めるのも未来が無いよ。
0621デフォルトの名無しさんNGNG
結局、ストアド使うに越したことはないよ。
0622デフォルトの名無しさんNGNG
>>618
普通にあるけど・・・
すべてのSQLでパフォーマンスを気にするかどうかとは別の問題では?
うちではクリティカルな所は熟練者に任せてるけど、流石にすべての
SQLを確認は厳しいよ。
0623デフォルトの名無しさんNGNG
>>621
SPまたは、Viewな。
それは基本だけど、DBMS依存にはなるよねどうしても。

トリガとかチェック制約ぐらいになると、入れたがらないDBAも多いね。
この辺は人によって見解や好みが違う。
0624デフォルトの名無しさんNGNG
>>620
> なんか書き込みが一昔のCOBOL厨みたいだな。
ワロタ。でも禿道。言い得てる。
0625622NGNG
熟練者が担当していない部分で、SQL記述の統一を図りたいからORマッピングツールを
考えてるんだけど駄目なのかなぁ。
ちょっと試した感じだと十分いけそうな気がするんだけど。
0626デフォルトの名無しさんNGNG
>>622
まあ、正直システムテストの一環でパフォーマンステストやって、
問題無さげなら通しちゃうこと、多いけどな。
ただ、生のSQLだと問題の抽出や修正は早いよ。grepでひっぱって
そのまま実行できる訳だからね。まあパラメタライズされてる
部分はいじる必要があるが。
0627デフォルトの名無しさんNGNG
PL/SQLでゴリゴリストアドパッケージ書く
Javaは表示に徹する

これ
0628デフォルトの名無しさんNGNG
というか、OracleでJavaを書く。

これ
0629デフォルトの名無しさんNGNG
>>627
OracleのSPは今どきJavaでもかけるけど、数年前に試したら
使い物にならなかったんで、避けてる。Oracleサーバプロセス内部で
実行されるAurora JVMのデキがウンコでね。
今でも避けたいDBAは多いだろう。

0630デフォルトの名無しさんNGNG
>>625
いいんじゃない?試してみる価値はありそう
0631デフォルトの名無しさんNGNG
>>628
誰が書くか
0632デフォルトの名無しさんNGNG
何故にDB依存の方に話が行く?
小規模でも構わないからどのDB依存にならない方法を見つけたいね。
0633デフォルトの名無しさんNGNG
今日もORツールの話はないの?
0634デフォルトの名無しさんNGNG
システム作る時はどのDBで動かすかを決めてから作るから、
別にDB依存でもいいや。むしろ関数使いまくり。
0635デフォルトの名無しさんNGNG
凄い汎用的に作ったつもりでいて、日付の取得に関数を使っていたのに気づいたとき…
それ以来、割り切ってDB依存するようになったね。
0636デフォルトの名無しさんNGNG
>>621
ま、SPやViewにできる部分はいいけど、複合的な検索条件を
動的に生成しなきゃいかん画面とかは、どうしてもある罠。

カーソルの受け渡しが出来るかどうかとか、SPの能力も
どうしてもDBMS依存になるしな。
0637デフォルトの名無しさんNGNG
>>635
WHERE句の条件に関数含めなきゃいけないケースとかは、わりと
どうしようも無いよね。
DECODEだのNVLだのの類だとか。
NULLの扱いなんて基本的なところからして、DBMSによって違うし
(というか、Oracleが標準に準拠してないだけなんだが)
0638デフォルトの名無しさんNGNG
>>618様はwhere句に関数を使うなとご立腹です
0639デフォルトの名無しさんNGNG
>>638
そうだよインデクスが効かなくなるからな、プンプン
つか、まあ俺は原理主義者じゃないから必要なときは使います
ごめん
0640デフォルトの名無しさんNGNG
>>639
関数インデックス・・・
0641デフォルトの名無しさんNGNG
Cayenne、キーの操作がめんどくさいのだが・・・
0642デフォルトの名無しさんNGNG
とりあえずO/Rマッピングに反対の人とか好きになれない人にとっては、
このスレは意味が無いと思われ。
他スレでやってくれないかな。

何も産まないフレーミング合戦やるより、このスレではO/Rマッピングという考え方が、
生産性向上とか効率につながるのかとか、意味のあるカキコしませんか。
その上で、

「O/Rマッピングに一瞬光を見たけど、やっぱSQL直書きのほうが効率的だわ」とか、
「やっぱしこれからはO/Rマッピングだよなー」とか、
いろいろな判断ができると思うんですよ。
ここんとこ、日本語で情報源を作ってくれる人とか増えてきたから、
どんどん有効な情報を共有して、使えるモノなら導入して、
定時で帰ろうぜ!(笑)
0643642NGNG
あぁ、でも、マンセー派ばっかりだとデメリットとかが見えなくなって、
盲目的にO/Rマッピングに隷属する信者ばかりになりそうですね。
客観的かつ論理的なO/Rマッピング否定論ってのも、オモシロそうですな。
0644デフォルトの名無しさんNGNG
>>642
ORマッピングは、いろいろな方針があるので単純にいい悪いを言うべきではないと思う。
つまり、ORマッピングという技術に対しての評価っていうのは、あまり意味がない。
なぜなら、SQLを意識せずSQLの場合より単純なコードでパフォーマンスも最適化されるような「理想的なORマッピングの実装」があれば、ORマッピングを使わない理由はないから。
実際には、トレードオフの部分があるから、それぞれの実装に対しての長所・短所をあぁだこぅだやるのがいいと思う。
HibernateだけをみてORマッピング使えねぇとか、CayenneだけをみてORマッピング使えねぇとかいうのは具の骨頂で。

Hibernateはマッピング先のオブジェクトがPOJOだから小回りがきくね。
HQLで、ほぼSQLでの操作ができるし。
パフォーマンスもチューニングしやすそう。

Cayenneはラップが厚いので、SQLを意識しないコードが書きやすい。
テーブルの関連をたどる処理が非常に書きやすい。
逆にSQLを意識したときは書きにくい
とくにキーの操作がやりにくい。
キーはすべて自動採番で、マッピングオブジェクトをそのプロセスだけで使う、というように条件をうまく選べばかなり楽ができる。
0645598NGNG
ちょっと、いろいろ試した結果を追加しておきました。
あまりチュートリアルに書いてないことを書いてます。
結局主キーでの並べ替えがわかりませんでした。
チュートリアルには主キーを使う操作があまり書いてないので、主キーの値を使うな、という方針なのだと思う。

どんな場合でも使いやすい、というわけではないツールです。集計はできない気配。
だけど、はまったときは楽々。
0646デフォルトの名無しさんNGNG
>>642
> 定時で帰ろうぜ!(笑)

つまり、電車があるうちに帰ろう、と。
0647デフォルトの名無しさんNGNG
>>646
おまいさんの勤務先では、就業規則に
「定時とは終電に乗れるまでの時間とする」
なんて定義されてるのかい?(w

ってマジレスはおいといて、
早めにあがりたいよな(w
0648デフォルトの名無しさんNGNG
こんなところに書き込んでるから
どんどん帰りが遅くなるんだよ
0649デフォルトの名無しさんNGNG
ΣΣ(゚д゚lll)
0650デフォルトの名無しさんNGNG
うーん。。。
Cayenneで主キーでの検索やら並べ替えってどうするんだろう・・・
単純な検索だけはできるんだけど。
0651デフォルトの名無しさんNGNG
limitはわかったけど、offsetはどうやるんだろう・・・
0652デフォルトの名無しさんNGNG
>>645
モデラーで DB からリバース生成した ObjEntity には DbEntity の
主キー項目がついてませんが、モデラー上で自分で追加してやれば
主キー項目も ObjEntity 上に持たせられます。
1.1 のモデラーなら、ObjEntity を選んだ状態で、アイコンの右から3番目の
"Create Attribute" を実行すると新しく空のアトリビュートが追加されるんで、
DbAttribute に DbEntity の PK 列、JavaType に対応する型を選んで、
ObjAttribute に適当な名前をつければ OK です。

で、マッピングされたクラスに PK 列が入ってればあとは単純で、
並べ替えは

SelectQuery query = new SelectQuery(Foo.class);
query.addOrdering("primaryKeyColumn", true);
List foo = ctxt.performQuery(query);

とか。

モデラーが自動で生成してくんないってことは、Cayenne の流儀に
反してるのかも知れませんが、自分はこーやってていままで特に
問題は出てないです、とりあえず。
いちいちモデラで作業しなきゃいけないからちとめんどいんですけどね。
(リバース生成じゃなくて、最初からスキーマもモデラで作ればいいのか..)
0653デフォルトの名無しさんNGNG
>>645
あと、集計というのが AVG とか COUNT とか MIN とかそういう集約関数
のことを指してるんでしたら、めんどくさいながらも一応使えるようです。

http://objectstyle.org/cayenne/examples/index.html

の SQL Aggregate Functions にやり方載ってました。
サンプルソース落としてこないと見れないんですが、コード上で
Expression 作ってという方法じゃなく、モデラー上で DerivedDbEntiry と
いうのを作って (赤、白、赤の三段重ねのアイコン)、そいつの spec に
max(%@) だのと書くようです。(そしてその ObjEntity を使う)

モデラーのドキュメントがまだあまり整備されていないので、spec を
どう書けばいいのか、詳しい使いかたは分からないんですが...orz
0654デフォルトの名無しさんNGNG
>>652
自分もそう思って、追加してみると、ObjectIdを設定して新規データを作成するときに「主キーがnull」というエラーが出るようになりました。
主キーが自動採番型になってるなら問題ないのだとは思いますが。
1.0です。
1.1ではなおってるのかな。

うひゃー、雷がすごいよ。
0655デフォルトの名無しさんNGNG
ObjectIdを設定せずに、プロパティのセッターで主キーを設定したらうまくいきました。
けど、気持ち悪い・・・
現実的には主キーはすべて自動採番にするだろうからいいとは思うけど。
0656デフォルトの名無しさんNGNG
1.1試してみたら、TempObjectIdを使って登録するやり方ではうまくいかなかった。
commitChangesで例外が出る。
データベースにcommitしたあとで、オブジェクト取得しなおすみたいなんだけど、そこで失敗するみたい。
ということで、必ず主キーのマッピングを追加したほうがいいみたいだ。でsetHogeId(...)で設定する。

実際のデータが登録されたあとで例外がでるので、タチが悪い。
こんな挙動されたんじゃ、怖くて使えないねぇ。
まだマイルストーンだから、リリースされたときには修正されるだろうけど、開発中でもこんな挙動するのは、そもそもの設計方針が悪そう。
0657デフォルトの名無しさんNGNG
Cayenne情報が増えてきたね。(・∀・)イイ!
Hibernateと双璧を成していく予感もあるから、
オレも勉強してみよう。
0658デフォルトの名無しさんNGNG
経験でいうと、やはりコード自動生成で済みそうなシーンは大抵Mapを使っても間に合う。
コードの自動生成するとプロジェクトのリポジトリが膨らんで嫌だし、
必要なものだけクラスを定義してやるのが結局一番シンプルだと思うよ。
そうやって定義されたクラスは重要なものって認識するし、自動生成されたコードだと
何が重要なクラスか分からなくなる。
0659名無しさん@そうだ選挙に行こうNGNG
>>658
必要なものだけ自動生成すればいいんじゃないの?
0660名無しさん@そうだ選挙に行こうNGNG
1からスクラッチでゴリゴリ書いて間に合うスケジュールになってる
プロジェクトだったら、自動生成など無くてもいいよな。
0661名無しさん@そうだ選挙に行こうNGNG
>>658
つたない経験だな。
0662名無しさん@そうだ選挙に行こうNGNG
Cayenneのリレーション処理なんか見てると、全然Mapと比較にならんわけだが。
主キーの処理をどうにかして欲しいとは思うが。
0663名無しさん@そうだ選挙に行こうNGNG
Mapを推してる奴はJava初心者
0664名無しさん@そうだ選挙に行こうNGNG
Java初心者ではなくて、効率の良い開発についてわかってない人だと思われ。
0665名無しさん@そうだ選挙に行こうNGNG
商業でもオプソでもこの手の(OR Mappingは型安全がウリとのことで)
プログラマを信用しない、プログラマを束縛することを基本姿勢にしているツールって
よくみかけるんだけど、

これって結局プログラマ(そのマネージャ)のコミュニケーション力を信用しない、
いいコードを保つための工夫、アイデアを考えることをやらせないということにも
なってるんじゃないのか。

それをやる能力を出させないで、こうしたツールで縛るっていうのはリスクがあると思うよ。
ツール自体のメンテナンスされなくなったときはどうする? ツールの使用が変わって
今まで作ったアプリが動かないときは?
0666名無しさん@そうだ選挙に行こうNGNG
ツール作者が想定している以上のことが起こるのが、大抵のソフトウェア開発の現場。
柔軟性が無いツールなら、逆にコスト高になる。

大体、こういうツール好きな香具師はツール学ぶコストを無視しすぎ。
0667名無しさん@そうだ選挙に行こうNGNG
あきらめたらそこで試合終了だよ
0668名無しさん@そうだ選挙に行こうNGNG
つまり、俺様の知らないツールを使うな、と。
0669名無しさん@そうだ選挙に行こうNGNG
根本的な考えが間違ってるから、いちいち突っ込むのも面倒。
各論は反論する余地があるだろうが。

>>665
> これって結局プログラマ(そのマネージャ)のコミュニケーション力を信用しない、
> いいコードを保つための工夫、アイデアを考えることをやらせないということにも
> なってるんじゃないのか。

自動化できる、本質的でない部分で、アイデアを考えるひまがあれば、本質的な部分で頭使った方がいい。

> それをやる能力を出させないで、こうしたツールで縛るっていうのはリスクがあると思うよ。

あたらしい、使えそうなツールを試さないリスクの方がでかい。

> ツール自体のメンテナンスされなくなったときはどうする? ツールの使用が変わって

メジャーなツールなら、致命的なバグを残したままメンテナンスされる可能性は少ない。
自分らで作ったフレームワーク・ツールの方がメンテナンスされなくなる可能性が高い。
もし致命的なバグが残ったままメンテナンスされなくなったら、自分でソースみてがんばる。
そういう致命的なバグは、自分が作ったソースで発生する場合の方がタチが悪い。

> 今まで作ったアプリが動かないときは?

アプリの寿命が短いから大丈夫。

> 大体、こういうツール好きな香具師はツール学ぶコストを無視しすぎ。

中心となる人物が学習すれば、あとの烏合の衆は通常のコーディングルール程度として使い方をとらえればいい。
0670名無しさん@そうだ選挙に行こうNGNG
>>669

>自動化できる、本質的でない部分

適材適所ではありますが
このOR/Mappingは自動化するまでもないことで自動化ようとしている場合が多いと思う。
だって、アクセサしかないクラスを自動的に作るんでしょ?
何の意味があるんだ。

> 自分らで作ったフレームワーク・ツールの方がメンテナンスされなくなる可能性が高い

そこは、リファクタリングでカバーするのが正しいと思うよ。
シンプルに作ればメンテナンスは簡単。
0671名無しさん@そうだ選挙に行こうNGNG
>> 今まで作ったアプリが動かないときは?
> アプリの寿命が短いから大丈夫。

いい状態のソフトなら、新しく作り直す意味はないはず。

>> 大体、こういうツール好きな香具師はツール学ぶコストを無視しすぎ。
>中心となる人物が学習すれば、あとの烏合の衆は通常のコーディングルール程度として使い方をとらえればいい。

それはそうだが、しかし、このOR/Mappingに関しては、
その労力を正しい設計、コーディングのためのコミュニケーションに費やすほうがいいと思う。
ツールっていうのはしばしば自由度が低くて、
ある要求がきた時点で、行き止まりになるか、突然険しい道になる。
0672名無しさん@そうだ選挙に行こうNGNG
>>671
> いい状態のソフトなら、新しく作り直す意味はないはず。

業務モデル自体が変わる。
上記の質問が出る時点で、業務アプリの経験がないことがわかったので、口出しは控えたほうがよいと思われる。

> だって、アクセサしかないクラスを自動的に作るんでしょ?
> 何の意味があるんだ。

手で作るより楽。確実。
Cayenneの場合、DataObject継承してるから、アクセサしかないクラスではないし。
0673名無しさん@そうだ選挙に行こうNGNG
>>672
>> いい状態のソフトなら、新しく作り直す意味はないはず。
>業務モデル自体が変わる。

それにしたって、最初からフレームワークの選択まで含めた作り直しはありえない

>> だって、アクセサしかないクラスを自動的に作るんでしょ?
>> 何の意味があるんだ。
>手で作るより楽。確実。

それはもう主観でしかないのだが、

漏れが思うにこれは型安全で解決する問題じゃない。
カラムに確実に正しい値が入る保証は常にあるシーンがあるとは思えない。
自動化されたテストで保証すべき。
0674名無しさん@そうだ選挙に行こうNGNG
>>673
>>> だって、アクセサしかないクラスを自動的に作るんでしょ?
>>> 何の意味があるんだ。
>>手で作るより楽。確実。
>それはもう主観でしかないのだが

いやぁ、実測しても手書きで作るよりは自動生成の時間も短いだろうし、間違いも少ないとおもうぞ。
0675名無しさん@そうだ選挙に行こうNGNG
>>673
> カラムに確実に正しい値が入る保証は常にあるシーンがあるとは思えない。

おまえはまず、考えを日本語にマッピングするフレームワークを使った方がいい。
0676名無しさん@そうだ選挙に行こうNGNG
>実測しても手書きで作るよりは自動生成の時間も短いだろう

なので、もう最初から単純なデータのやりとりのためにクラスを定義するのは止しましょう。
クラスを定義するのは(型安全にする以上に、たとえばそれがアプリケーションにおいてよく使いまわされる
核となるオブジェクトを定義するときのために)意味があるときだけにしましょう。
0677名無しさん@そうだ選挙に行こうNGNG
>>676
他に良い手段があるならね。

> それにしたって、最初からフレームワークの選択まで含めた作り直しはありえない

ありえるし。
むしろ、こんな局所的なフレームワーク、臨機応変だし。
0678名無しさん@そうだ選挙に行こうNGNG
>>677
>ありえるし。
>むしろ、こんな局所的なフレームワーク、臨機応変

マジですか。
確かにデータやり取りする部分が局所化できていれば、書き直しにはそんなに苦労しないしが。

だからこそ、クラス生成する技巧やるほどのことかどうかは謎になってくる。
0679名無しさん@そうだ選挙に行こうNGNG
> これって結局プログラマ(そのマネージャ)のコミュニケーション力を信用しない、
> いいコードを保つための工夫、アイデアを考えることをやらせないということにも
> なってるんじゃないのか。
それを言ったらインタフェースや抽象クラスのabstractメソッドもいらない、
カプセル化もいらないってことにならないか?全部publicで作ればOK、みたいな。

ルール決めやその徹底、チェック等の工数も削減できるんだよ。
大規模開発経験無いな?
0680名無しさん@そうだ選挙に行こうNGNG
>>678
.NETからJ2EEとかJ2EEから.NETとか、VB6からVB.NETに比べれば、ぜんぜん楽。
新しく作るサブシステムから徐々に移行することもできるわけだし。
0681名無しさん@そうだ選挙に行こうNGNG
>>678
> クラス生成する技巧

これを技巧っていうくらいだから、そうとうレベルが低いんだろ。
0682名無しさん@そうだ選挙に行こうNGNG
>>678
> マジですか。

ねんのため、いうておくが、ビジネスモデルの変更にともなうシステム更新での話だぞ。
0683名無しさん@そうだ選挙に行こうNGNG
>それを言ったらインタフェースや抽象クラスのabstractメソッドもいらない、
>カプセル化もいらないってことにならないか?

プログラマに単に自由を与えるのではなくて、
コードに表現力を持たせることが重要だと思うのだけど、
表現する自由が無くすのはよくないなと。

いいフレームワークなら表現力は上がると思うんだけど、
単にオブジェクトとデータベースのデータをマッピングするためのクラスを生成って、
これは表現力を薄くすると思う。
0684名無しさん@そうだ選挙に行こうNGNG
>>683
> 表現する自由が無くすのはよくないなと。

いらん。確実に動く方が大切。
0685名無しさん@そうだ選挙に行こうNGNG
>いらん。確実に動く方が大切。

いや、確実に動かすために表現力が要るといいたいのですが
0686名無しさん@そうだ選挙に行こうNGNG
>>685
Perlでも使ってろ。

同じコードを書くのに複数の書き方があるよりは、ひとつの書き方しかない方が、表現力は下がるが確実に動く。
0687名無しさん@そうだ選挙に行こうNGNG
ここでいう表現力っていうのは、「これしかない、この方法を使え」 と明確に
プログラマに伝えることだから、フレームワークは表現といえる。

(とはいうものの、ORマッピングは何も表現しない、それどころか余計なクラスが
大量に作られるため、薄くしている。)
0688名無しさん@そうだ選挙に行こうNGNG
>>687
えっと、自覚のないアホは逝ってください。
0689名無しさん@そうだ選挙に行こうNGNG
>>687
> ORマッピングは何も表現しない

意味がわからんが。
接続のタイミングやトランザクションの使い方、JOINのやりかただとか、データの取得・更新の記述を限定させる役割はある。
0690名無しさん@そうだ選挙に行こうNGNG
けんかを〜やめ〜て
0691名無しさん@そうだ選挙に行こうNGNG
>>690
片方があまりにもわけわかってないから、けんかになってない。
0692名無しさん@そうだ選挙に行こうNGNG
「労力」を強調する所を見ると、「ORマッピングを覚えるのがマンドクセ」と言いたいだけか
0693名無しさん@そうだ選挙に行こうNGNG
つまり、新しいツールが覚えられなくなった、頭の固い高齢者。
0694名無しさん@そうだ選挙に行こうNGNG
やあ、Map厨ですよ。

>>686
> 同じコードを書くのに複数の書き方があるよりは、ひとつの書き方しかない方が、
> 表現力は下がるが確実に動く。

コボラーの方ですか?
コーディング規約とか、好きでしょ。
C++とアセンブラについては、どう思いますか?
0695名無しさん@そうだ選挙に行こうNGNG
>>692
アフォですね。ていうか、プロジェクト切り回したこと、ないでしょ。
全部が自分で完結してる世界なら、これ以上楽な物はないわけですが。
0696名無しさん@そうだ選挙に行こうNGNG
>>694
コードをいかようにも書ける場合こそがコーディング規約の出番なわけだが。
コードの書き方が限定されていたら規約類もガチガチにしなくて済むんだよ。
0697名無しさん@そうだ選挙に行こうNGNG
>>693
新しいツールは自分が学習すればよろしい。
ですが、プロジェクトに導入するかどうかは別の次元の話ですね。
学習(させる)コストと対価を考慮に入れないとね。

RO-Mapping信者の主張するところの、フレームワークのメリットは
Fool Proofであること、バカにバカなSQLを書かせることを防げること、
といった、大規模三流業務開発向けのメリットな訳ですが、
実はそれは新し物好きの脳内理想論に過ぎなくて、現実を無視している
ようにしか見えないというのはそこのところです。

現実のRDBシステムには差異があり、システムには要求性能があり、
開発者の一人一人(特にバカ)にいちいち新しいフレームワークを
学習させる時間はないというのは現実なんですがね。
0698名無しさん@そうだ選挙に行こうNGNG
>>696
で、C++はどうですか?
・テンプレートは使わない(移植性がないから。つかメタプログラミングヲタの
コードはバカに読ませられないから)
・例外は使わない(移植性がないから)
・RTTIは使わない(移植性がないから)
・staticコンストラクタは使わない
   :
   :
とかやってる訳ですか。
C++のソースは移植するのが大変なことで有名ですが、それ以上に
プログラマ間の移植性が無いとも言われますね。
だいたい、自分の好きな周辺のみをいじくっているという。
0699名無しさん@そうだ選挙に行こうNGNG
>>697
グダグダなメンテ不能なコードが大量生産される理由はここにあり!
って感じでつね
0700名無しさん@そうだ選挙に行こうNGNG
>>699
いや、だからそれが現実なんですよ。
で、フレームワークを導入すれば未来がバラ色になると考えている
あなたこそ、脳味噌が腐っているとしか思えませんね。
所詮、使役される側の発想でしかない訳です。
0701名無しさん@そうだ選挙に行こうNGNG
>フレームワークを導入すれば未来がバラ色になると考えている
はぁ?脳みそ腐ってませんか?
どこを縦に読むとそうなるんでつか?
0702名無しさん@そうだ選挙に行こうNGNG
明らかに経験少なそうなのに、ここまで強気だとたくさん釣れるんだな。

どうせ*00マン程度のシステムしか作ったことないんだろ。
あまりにもプロジェクト運用の進め方がわかってないよ、この人。
0703名無しさん@そうだ選挙に行こうNGNG
SQLを直書きすることに対しては
> スキル依存イクナイ
> 烏合の衆に
うんぬんとのたまう方々が、一方ではフレームワークぐらい
学習しろよと平気でのたまう訳です。

俺なら、SQLを覚えさせますね。そっちのが確実に役に立つから。
0704not 700 ◆iKwMOjCT4s NGNG
フレームワーク導入したところで意味は無いってのはその通りだと思う

メリットはクラス自動生成されることによる型安全、コンパイルエラーが出るだけ。
そんなの何の意味も無い。
0705名無しさん@そうだ選挙に行こうNGNG
>>702
で、何が分かってないのか、説明してごらん?
あんたはこのRO-Mappingとやらで一体どれぐらいの規模のやつを
作ったってのよ。
0706名無しさん@そうだ選挙に行こうNGNG
そもそもXDocletやVelocityを考えたのは、XPを発明した欧米の方達ですよ。
MDAの考え方とかご存知ですか?
0707名無しさん@そうだ選挙に行こうNGNG
>>705
俺は自動生成の話をしただけ、strutsのvalidation.xmlとか1000万超える
レベルになると自動生成使わないと信じられないことにならない?
0708名無しさん@そうだ選挙に行こうNGNG
>>698
自分の世界に入ってしまう人だねぇ。
関係ない話題持ち出してきて、それに固執する。
そりゃ、みんなでコーディングは向いてないよ。
0709名無しさん@そうだ選挙に行こうNGNG
>>706
あ、ようするに海外のえらい人が言ってることは鵜呑みにしちゃうひと
なわけね……

というのはさておいて、
XDocletやVelocityは、別にRO-Mappingとは直接関連がないでしょ。
有効と認めたら使う、認めなかったら使わない。
私は自分で判断しますね。そんだけです。
XPでさえ、プロジェクトによって有効かどうかは差異がある。
「銀の弾はない」ととっくの昔にバレてるのがソフトウェア・システム
開発の現状なんですから。
0710名無しさん@そうだ選挙に行こうNGNG
>>703
SQLよりはよっぽど個人差がつかない。
ちなみに、フレームワークといっても開発者に使わせるのは、その一部分だけ。
メインのアーキテクトが局所化して振るから、それほど学習コストはかからない。
0711名無しさん@そうだ選挙に行こうNGNG
>>709
OR-Mappingの自動生成で主に利用されてます。

別にXPが銀の弾丸とも言っていない。
ただ、縛りつけが嫌いなはずの欧米人が開発してるって事。
みんな、面倒くさいルーチンは嫌いなんだよ。
0712名無しさん@そうだ選挙に行こうNGNG
>>710
実際には、アーキテクトがいて三流開発者に振るようなケースでは、
そもそもSQLにタッチする部分は、書かせない、でしょ。
だから、差異はないとも言えるわけです。
あなたは「それほど学習コストはかからない」と言うが、
POJOを使うだけならゼロですね。ですがこれはMapも同じだ。
0713名無しさん@そうだ選挙に行こうNGNG
>>709
お前はえらい人関係なく、自分の意見しか信じないタイプだろ。
0714名無しさん@そうだ選挙に行こうNGNG
>>713
いや、そんなことはないですよ。
BillJoyタン、ハァハァとか
RichardStevensタン、ハァハァ、なんで死んじゃったのよとか

まあどうでもいい話ですな
0715名無しさん@そうだ選挙に行こうNGNG
>>703
> うんぬんとのたまう方々が、一方ではフレームワークぐらい
> 学習しろよと平気でのたまう訳です。

フレームワーク使って、中心人物が学習すれば、烏合の衆にはコーディング規約の一環としてフレームワークの使い方教えれば済む、というわけなのだが。

> 俺なら、SQLを覚えさせますね。そっちのが確実に役に立つから。

いいねぇ、時間があって。
そこからさらにコーディング規約とか、データベーススキーマの説明するわけだね。
もちろん、細かい使いわけまで教えるんだよね。
0716名無しさん@そうだ選挙に行こうNGNG
>>712
いくら3流開発者でも、流石にORM無しだとSQLを書かせざるえないだろ。
0717名無しさん@そうだ選挙に行こうNGNG
Map厨はDAOを使っていまつか?
0718名無しさん@そうだ選挙に行こうNGNG
>>715
DBスキーマを理解してないやつにDBアクセスコードを書かせるなんて
そんな空恐ろしいこと、俺にはできませんが。

フレームワークを使えばそれが可能だとでも思ってるの?本気で。
0719名無しさん@そうだ選挙に行こうNGNG
のらりくらりと明言を避けるあたり、ある意味面倒なプロジェクトの経験豊富なのは認めてやろうw
0720名無しさん@そうだ選挙に行こうNGNG
>>717
さすがにDAOは、Access MDBのテーブルとかをマニアックにいじりたい
時ぐらいしか使う用途がないんじゃないでしょうか
プライマリスレッドからしかいじくれないというのは、今どき
かなり致命的でしょう。
0721名無しさん@そうだ選挙に行こうNGNG
>>718
ORM使えば問題ないだろ?3流開発者へ割り振る仕事なんだし。
0722名無しさん@そうだ選挙に行こうNGNG
>>718
SQL使ったJDBCのコード書かせるほうが、もっとこわい。
0723名無しさん@そうだ選挙に行こうNGNG
>>720
このレベルかよ・・・もう寝よ。
0724名無しさん@そうだ選挙に行こうNGNG
数百万レベルでも、数人で組むなら有効だとおもうぞ。
ひとりで組むんでも、有効だとおもうぞ。
0725名無しさん@そうだ選挙に行こうNGNG
>>723
どうせなら、バカにする理由ぐらいは教えて欲しいものですな
後学のためにも。
0726名無しさん@そうだ選挙に行こうNGNG
>>712
> あなたは「それほど学習コストはかからない」と言うが、
> POJOを使うだけならゼロですね。ですがこれはMapも同じだ。

Mapの場合、プロジェクト独自のルールで使うわけだから、ORマッピングと同等に使うなら、それなりに学習コストがあるとおもうぞ。
0727名無しさん@そうだ選挙に行こうNGNG
>>723
くまー
0728名無しさん@そうだ選挙に行こうNGNG
あれ、もしかして>>720はマジレスだったのか?
0729名無しさん@そうだ選挙に行こうNGNG
>>722
そうですか?
だいたい、「怖い」って、あなたテストもせずに納品するんですか?

生のSQLだと、実はコードや設定ファイルからSQLを抽出することは
簡単にできるので、問題を防げることが多いですよ。
という話は前にも書きましたがね。
0730名無しさん@そうだ選挙に行こうNGNG
>>725
ここ来るならDAOパターンくらい頭に入れた上で議論しろよ。
0731名無しさん@そうだ選挙に行こうNGNG
あ、DAOって聞いたときに、MSのDAOライブラリだとおもったのよ。
ごめんね。
0732名無しさん@そうだ選挙に行こうNGNG
って、もしかして今や誰もそんなの、知らない?
0733名無しさん@そうだ選挙に行こうNGNG
>>731
プ、必死ですね。
0734名無しさん@そうだ選挙に行こうNGNG
ORMの話の流れでDAOって出てきて、何故にMSが絡むんだよw
0735名無しさん@そうだ選挙に行こうNGNG
今必死にgoogleで調査中です。
0736名無しさん@そうだ選挙に行こうNGNG
>>735
マジっぽいな。反論がぴたりと止んだ。
0737名無しさん@そうだ選挙に行こうNGNG
えーと、私の過去の発言をさかのぼっていただければ、
ORMの文脈でのDAOについて私が発言していることは分かるでしょう。
たとえば>>121とか>>131とかですな。

今ちょっとDAOでMSライブラリの話が思い浮かんだのは
極めて個人的な理由なので、あまり触れたくありませんな。
0738名無しさん@そうだ選挙に行こうNGNG
>>729
> だいたい、「怖い」って、あなたテストもせずに納品するんですか?

あのぉー、問題のレベルが違うんですが。
テストしたところで、確実なテストはできないし、そもそもの品質が低ければ、修正コストもばかにならんし。
結果さえ表向きよければ、途中は何が起ころうと、時間がかかろうと、問題ないわけ?
0739名無しさん@そうだ選挙に行こうNGNG
えー、、DaoからMicrosoft Accessを連想するってありえな〜い。
高度に練りこんだネタだよな?w
0740名無しさん@そうだ選挙に行こうNGNG
VB厨が一匹紛れ込んでる模様
0741名無しさん@そうだ選挙に行こうNGNG
>>737
同一人物なんて分からんよ。認識して欲しかったらキャップ付けろ。
0742名無しさん@そうだ選挙に行こうNGNG
>>738
> テストしたところで、確実なテストはできないし

プゲラ
あのーお客さんのDBいじるのに、確実に動くかどうか分からない
その程度のやつを納品するのね、あなたは。
SQL直書きで、ちゃんとSQLが意図通りに動いてるかどうかの確認なんて、
簡単でしょ。
極めて繊細なレースコンディションのテストしてる訳じゃないんだからさ。
0743名無しさん@そうだ選挙に行こうNGNG
>>740
VBにはOR-Mapperが無いからな。
0744名無しさん@そうだ選挙に行こうNGNG
>>741
あ、俺は>>100ですよ。まあキャップつけてもいいんだけどさ、
別に認識してほしいってほどじゃない。
0745名無しさん@そうだ選挙に行こうNGNG
>>742
プゲラ

発想が極端過ぎ。
0746名無しさん@そうだ選挙に行こうNGNG
>>742
OR/Mappingと比べて、SQL直書きの方が検証が大変だと思われるんですが
すべてのSQLに目を通してテストされてるんですか?
0747名無しさん@そうだ選挙に行こうNGNG
>>739
そうかな。
MSのDAOライブラリを使って便利なのって、今どきはAccessのMDB
いじるときぐらいだと思うけど。
普通はVB厨御用達なのは、今どきADOでしょ。ただしそれも6.0以前限定で、
.NETだとADO.NETね。
0748名無しさん@そうだ選挙に行こうNGNG
>>747
言いたい事はわかるが、ここでそんな話になる事自体おかしい。
0749名無しさん@そうだ選挙に行こうNGNG
> だいたい、「怖い」って、あなたテストもせずに納品するんですか?
どんな低スキルなプログラマに何を担当させてもテストするのなら怖くないの?
0750名無しさん@そうだ選挙に行こうNGNG
>>100はMS Access→Javaへのスキル転換中エンジニア・・・
0751名無しさん@そうだ選挙に行こうNGNG
>>746
検証って、何のことを言ってるのかな。
「何がどう大変」になるのか、説明してくれる?

「入力に対して想定した結果がDBに格納されていること」を
テストするなら、実装によって差異は生じませんね。
性能のチェックをするならば、同じくどちらも同じですが、
机上でSQLのチェックをするのであれば、直書きの方が圧倒的に
すぐれていますね。見りゃ、どういうSQLが送られるかすぐ分かるから。
0752名無しさん@そうだ選挙に行こうNGNG
ぼくー、Accessベースのシステムと一緒にしないでね??
0753名無しさん@そうだ選挙に行こうNGNG
MapをDAO層に渡すのはきっついなぁ
0754名無しさん@そうだ選挙に行こうNGNG
>>751
良く分からんが、そもそもSQLのチェックなんて必要ないだろ。
あんたの言う、型チェックまで入った自動テストが通っているのであれば。
0755名無しさん@そうだ選挙に行こうNGNG
>>750, >>752
なんだ、君らその程度の煽りでプライドを保つぐらいしか
脳がないのね。
DAO層の概念ぐらい知ってるっつーの。って、>>737で説明したでしょ。
0756名無しさん@そうだ選挙に行こうNGNG
>>755
そこで煽るお前の方が脳が無い事に気づけ。
0757名無しさん@そうだ選挙に行こうNGNG
こういう中途半端なコボラーに粘られるとマジでまいるな。
0758名無しさん@そうだ選挙に行こうNGNG
>>754
信じ難い書き込みを見た。
あのさ、型チェックが通ればいいとでも思ってるの?
「コンパイルが通れば、いい」と同じレヴェルの発想だぜ、それって。

あなたの脳内にはシステムテストも運用テストも性能テストも
無いんでしょうな。
0759名無しさん@そうだ選挙に行こうNGNG
「どういうSQLか」は、ツールにやらせた方が品質が一定しない?
プログラマにやらせると人によって微妙に違ってくるからやっかい。
0760名無しさん@そうだ選挙に行こうNGNG
>>757
ごめん俺コボルは知らないんだ、新参だから。
CとかC++とかなら、わかるよ。
0761名無しさん@そうだ選挙に行こうNGNG
>>758
お前は馬鹿か?

自動テスト内で、参照や更新ロジックの整合性が証明されてるのは当然だろ?
なんで、さらにSQLを洗い出してテストする必要があるんだよ。

型チェックが入ってるって書いたのは「皮肉」だ。
0762名無しさん@そうだ選挙に行こうNGNG
>>759
それを分からず、全員にSQLを書かせようと意気込んでるようです。
0763名無しさん@そうだ選挙に行こうNGNG
>>759
えーと、OracleのSQLのオプティマイザの能力がどの程度か知ってる?
いや勿論素晴らしいんですが、オプティマイザだけじゃ限界があるから、
プランをコストベースにするかどうかとかを、ユーザサイドが設定するし、
SQL自体のチューニングもやっぱり必要という世界な訳です。

「品質が一定」って、何なの?要するに、コーダーに好き勝手に書かせて
放置してる訳じゃないんでしょ?
しいて言えば、ただのSQLの場合、Javaのコード程は品質に差が生じない
でしょう。「やれることが限られてる」から。
0764761NGNG
>>758
純粋に興味があるんだが、お前の単体テストってどうやってるの?
ツールは何使ってる?
0765名無しさん@そうだ選挙に行こうNGNG
>>761
いやだから、整合性テストだけじゃ性能や、トランザクションのインプリが
正しく行われてるかは、確認できないでしょ?

DBのトランザクション絡みは、突き詰めればレースコンディションの
話になるから、単体自動テストでどうにかするのは、限界あるよ。
0766名無しさん@そうだ選挙に行こうNGNG
>>763
ORMよりSQLの方が品質に差が出るに決まってるだろ?
そもそもDBはすべてOracleを使うのが前提なのか。

ヤバイ所はViewにして、後でオプティマイズ書ければいいだけの事。
0767名無しさん@そうだ選挙に行こうNGNG
というか、誤りを作りこまないことと、テストすることは関係ない。
0768名無しさん@そうだ選挙に行こうNGNG
>>766
違う。Oracleはもっとも有名でメジャーなRDBMSだから例に出してるだけ。
他も似たりよったりかよりひどいだけだよ。

> ヤバイ所はViewにして、
ようするに、Viewという形のstaticなSQLで済む場合しかあなたは頭に
ないわけね。
そんなの出来るところはそうするのは、常識以前の問題。
0769名無しさん@そうだ選挙に行こうNGNG
>>765
トランザクションの制御は宣言的にやるから、XMLチェックだけで良い。
性能テストはボトルネックになる箇所だけチェックすれば良い。
0770名無しさん@そうだ選挙に行こうNGNG
>>769
で、ボトルネックをテストする前から特定できるの?あなたは。
まあ、想定は出来る場合はあるだろうけど、やってみなきゃ確証は
とれないよそんなの。
0771名無しさん@そうだ選挙に行こうNGNG
ハァ、、頭がガチガチに固い、40代の先輩と話してるみたいだ。。
物知らないのに、議論に加わりたがるんだよね。。
0772名無しさん@そうだ選挙に行こうNGNG
>>763
つまり、プログラマ依存またはDBMS依存なわけね。
使うDBMSによって貴方のシステムは品質が大きく左右されるわけだ。
0773名無しさん@そうだ選挙に行こうNGNG
>>768
お前煽りすぎ。そもそもお前が危惧してるようなSQL書いてみてよ。
実際はViewレベルで解決できるケースがほとんどだよ。
0774名無しさん@そうだ選挙に行こうNGNG
>>772
は?何当たり前のこと言ってんの。
ユーザがバカ高い金だしてOracle使うのは何のためだと思ってるんだか。

Oracle要らないんなら、Berkeley DBでも使って自分でDBMS実装すれば?
0775名無しさん@そうだ選挙に行こうNGNG
>>770
ボトルネックが性能テストで分かったところで、解決するってだけの話。
それでHQLで厳しいようならネイティブのSQLを書く。
0776名無しさん@そうだ選挙に行こうNGNG
>>773
うんまあちょっと煽りすぎだけど
そのほうが盛り上がるからね(w
0777名無しさん@そうだ選挙に行こうNGNG
>>774
どうやってユーザーにOracleを勧めているのかが目に浮かぶよ。
0778名無しさん@そうだ選挙に行こうNGNG
>>776
自分のバカをさらして盛り上げるとは、いい奴だ。
0779名無しさん@そうだ選挙に行こうNGNG
>>777
決まってるじゃないか。俺らは余分なサポートはしたくない。労力は
払いたくない。Oracleならゴールドやプラチナ保持者程度は
ゴロゴロしてる。
だから、金払えオラ。
0780名無しさん@そうだ選挙に行こうNGNG
頭の固いオヤジ確定だね!
0781名無しさん@そうだ選挙に行こうNGNG
>>778
うん感謝してよ。
バカをよってたかって叩きたがるバカが多いからね、このスレは。
0782名無しさん@そうだ選挙に行こうNGNG
DAO 
読み方 : ディーエーオー
フルスペル : Data Access Object
00.2.11更新

Microsoft Accessによって作成されたデータベースを操作するための
プログラミングインターフェース。
データベースの作成を含め、あらゆる操作をプログラムから利用することが可能。
同社のプログラミングツール「Visual Studio」シリーズに標準で添付されており、
Visual BasicやVisual C++などで利用することができる。
0783名無しさん@そうだ選挙に行こうNGNG
>>781
ただねぇ、あまりにもバカだから面白くないんだよねぇ。
0784名無しさん@そうだ選挙に行こうNGNG
こいつが話しているDBの話って、3,4年くらい前に必死に俺も訴えてた気がする。
今は自動に任せられる部分が増えて楽になったよな。
0785名無しさん@そうだ選挙に行こうNGNG
うちはPostgreSQLの案件もDB2の案件もあるからなー
Oracleでゴリ押しできるならいいんじゃない?
0786名無しさん@そうだ選挙に行こうNGNG
>>782
古いよねえ2000以降更新が止まってるんだもの。
でも、MDB使う分には今でも便利なときはありますよ。
0787名無しさん@そうだ選挙に行こうNGNG
今はSybaseですよ!
0788名無しさん@そうだ選挙に行こうNGNG
>>785
mysqlとかsybaseとかMSSQLとかはないんですか?
0789名無しさん@そうだ選挙に行こうNGNG
>>783
いやそのツマランはなしに必死になって食らいついてくるアフォが
多いからこんだけ伸びるのよスレが。
0790名無しさん@そうだ選挙に行こうNGNG
>>786
ADOで。
そしてスレ違い。
0791名無しさん@そうだ選挙に行こうNGNG
>>789
はやくお引取り願いたい。
0792名無しさん@そうだ選挙に行こうNGNG
>>788
俺今挙がってるすべてのDBで仕事した事ある。
一番好きなのはPostgreSQLかな。

Oracleは遅いし、メンテナンス費かかるから嫌い。
0793名無しさん@そうだ選挙に行こうNGNG
>>792
Oracleはチューニングしないと遅い。ちゃんとチューニングしなさい。
0794名無しさん@そうだ選挙に行こうNGNG
>>790
んなことは分かりきってるので>>747で既出ですがね。
0795名無しさん@そうだ選挙に行こうNGNG
>>789
>>764
0796名無しさん@そうだ選挙に行こうNGNG
答えてよ。
0797名無しさん@そうだ選挙に行こうNGNG
>>792
要するに、あなたにはOracleのありがたみが分からない
それだけのことです
まあ、Oracleの全てをマンセーする訳じゃありませんがね
0798名無しさん@そうだ選挙に行こうNGNG
そろそろ燃料投下をやめてくださ〜〜い!
0799名無しさん@そうだ選挙に行こうNGNG
Oracleに慣れると、客に優しいシステムは作りづらくなる。
0800名無しさん@そうだ選挙に行こうNGNG
知識のベクトルが異なっていて、会話が成立たない例だな。
大人しくDB板へいってくれ。頼むから。
0801名無しさん@そうだ選挙に行こうNGNG
>>800
中途半端にDBに対する自信があるから、Javaの知識が浅くても
意見を強引に押し付ける。

まあ、良く見られる光景です。
0802名無しさん@そうだ選挙に行こうNGNG
そういやうちのDBエンジニアでこんな香具師がいたな。

「DBに関してJavaエンジニアの意見を全く聞かない」

ちょっと気になるとこを指摘されると、顔真っ赤にして反論してたな〜
0803名無しさん@そうだ選挙に行こうNGNG
みんな食うために必死なんですよ
0804名無しさん@そうだ選挙に行こうNGNG
だからといって、ここでウサ原さんでくれ。
0805名無しさん@そうだ選挙に行こうNGNG
なんか知らんが、Map厨はまだ理解できてないのか。
J2EE設計を行う上でエンティティのMap実装なんか、ありえない。
そんなこと、ある程度の経験積んでる開発者なら常識とも言えないほど当たり前のことだろうが。
そもそもエンティティをMapで表現することに一体何の利点がある?
柔軟性?そんな見せ掛けだけの薄っぺらな柔軟性で一体どんなシステム作ってんだよ。
型安全も拡張性も多態性も、Javaの利点をことごとく捨て去ってまで目先のお手軽さを
優先するような奴が、システム設計なんかすんな。周りが迷惑するだけだ。
OO自体理解してないみたいだから、それこそ時間の無駄かもしれんが、
うちの新人がここ読んで変な気起こされても困るんで、一応言っとく。
0806名無しさん@そうだ選挙に行こうNGNG
ObjectモデルとRelationモデルのギャップを埋めることの意義をわかってないんだよね。
だから、POJOだの、Mapだの、そのレベルのどうしようもない話しかでてこない。
0807名無しさん@そうだ選挙に行こうNGNG
>>805
それでも納得していただけないのでMap厨なのです。
0808名無しさん@そうだ選挙に行こうNGNG
まあ、こうやって顔真っ赤にして反論してくれる人たちがいるから
飽きないんですけどね。

> J2EE設計を行う上でエンティティのMap実装なんか、ありえない
こういうのをstubbornという訳です。いやどうぞあなたの会社の
新人を教育する気は私にはありませんし、勝手になさってください。

コードの再利用性や疎結合を高めるために、OOというよりは
デザパタを駆使して作り上げた典型的なモンスターがJ2EEですが
EJBを選択せずにこっちを選ぶ人というのは、J2EEが場合によっては
無駄にデカ過ぎることには気づいている訳です。
なんであのJ2EEのPetShopデモはあんな下らないアプリなのに
あんなにデカいのか、と。

あのbjarne stroustrupのネタインタビューを思い出すところですね。
コボラの給料がアフォみたいに安くなったから、無駄に複雑な
言語C++を俺は作ったと。
0809名無しさん@そうだ選挙に行こうNGNG
J2EEにはサーブレット/JSPやJavaMailも含まれてますよ、と。
0810805NGNG
駄目だ。ほんと救いようがねー。
必要なはずの複雑さすら取っ払っちゃ元も子もないだろうが。
だいたいな、Mapでやるにしたって型安全ぐらい簡単に実装できるだろうに、
なんでそれすらやってない?
その程度の知識で、どっからその自信が沸いてくんだよ。
0811名無しさん@そうだ選挙に行こうNGNG
EJBに関してはこういう状況なわけだが。
ttp://itpro.nikkeibp.co.jp/free/JAV/NEWS/20040510/1/

あいかわらず話題それて自分の世界に入っていくし。
0812名無しさん@そうだ選挙に行こうNGNG
>>810
自信は自分の内側から沸いてくるものです。
ボウフラのように。
0813名無しさん@そうだ選挙に行こうNGNG
>その程度の知識で、どっからその自信が沸いてくんだよ。

>あのJ2EEのPetShopデモ
>あのbjarne stroustrupのネタインタビュー
たった2回の「あの」ではあるが
たぶん知識量そのものに絶対の自信を持っているのだろうと推察される
0814名無しさん@そうだ選挙に行こうNGNG
いまさらストラウスとラップのニセインタビューが出てくるところなんかが、その知識のフルさを
0815名無しさん@そうだ選挙に行こうNGNG
>>814
ははは、あなたはコンテンポラリという表層を漂ってるだけの
ボウフラとして一生生きてください。
古きを温めることを知らない能無しの技術者はね。
0816名無しさん@そうだ選挙に行こうNGNG
まあ、DB屋はこんな感じでも食っていけると思うよ。ウザイけど。
こぼらーよりは全然寿命長いだろうね。
0817名無しさん@そうだ選挙に行こうNGNG
っていうか、あのインタビューは、C++を複雑なだけで使えないというコボラーを皮肉ったものだ。
ORマッピングが複雑なだけで使えないというアホへの例え話としては、最適かもしれない。
0818名無しさん@そうだ選挙に行こうNGNG
>>815
お前の主張している古きは別に温めるレベルのものではないよ。
0819名無しさん@そうだ選挙に行こうNGNG
>>816
いやまさか、リアルでこんな奴なら俺でも敬遠しますよ(w

ただ、実際のビジネスの現場では、なんだかよく分からないが
自信満々の奴が勝つ、というケースは意外と多いですね。
日本人は「断言してくれる人」を必要としてるのかも知れません。
まあ、そいつがちゃんとケツを持てるかどうかは
別問題だったりしますが。
0820デフォルトの名無しさんNGNG
みんなそろそろ気付き始めてる?

コボラーよりウザイ事に。
0821デフォルトの名無しさんNGNG
>>815
温めなくていい古きを温めて、新しきを知らないのは、害だけど。
0822デフォルトの名無しさんNGNG
>>817
なるほど、その程度に読んだのですね。
あれはC++へのエレガントな皮肉にもなってますよ。
0823805NGNG
いまどきわざわざEJB選択するなんてアフォがどこにいるんだ。
だからここで議論されてるようなORMapperやらDIコンテナが注目されてるんだろうが。
で、必要最低限の複雑さでどうにか切り盛りできないかって、
その辺を模索していく中で、EJB3.0ってのが見えてきたわけだろ。
お前の場合は何なんだよ。アクセサすらないMapで一体何をどうしたいんだ?
たとえリードオンリーのデータだろうが、それをMapで表現するってことに
どんな問題があるのか分からないようなら、もう一度入門書からやり直して来い。
0824デフォルトの名無しさんNGNG
というか、ここ最近のハードウェアスペックだとアホみたいなSQL
書かない限りは問題なく本番でもいける。
まあ、経験的に社内の基幹システムがほとんどだけどね。
0825デフォルトの名無しさんNGNG
>>822
C++は突貫で作った感が否めないし、EJB2.0は確かに重すぎるが。
0826デフォルトの名無しさんNGNG
>>823
> いまどきわざわざEJB選択するなんてアフォがどこにいるんだ。
そういう面白いことは、別の場所でケンカ売ってくるといいと
思いますが(w
私のようにたくさんのレスをもらえるかもしれませんよ。
0827デフォルトの名無しさんNGNG
>>823
ローン抱えちゃってるから、そんな余裕ないんだってば。
0828デフォルトの名無しさんNGNG
>>825
突貫でというか、Cとの互換性を維持しつつ仕様を追加していった
結果があのKichen sinkだと思いますね。

個別的な仕様には文句のつけようのない、筋の通った理由がある。
でも、総論的には……
0829デフォルトの名無しさんNGNG
>>805
言いたい事は非常にわかるし、その通りなんだが。

Map厨の頭には届かないと思うよ。とにかく自分ワールド炸裂だから。
0830デフォルトの名無しさんNGNG
>>826
間違ってない意見なので、「そうだよねぇ」となるだけ。
0831デフォルトの名無しさんNGNG
>>826
DIConのおかげで必要ないよ。
J2EE Development without EJB 読んだ?
0832デフォルトの名無しさんNGNG
自分の知識をひけらかそうと、小ざかしい英語使う奴は嫌いだ。
0833デフォルトの名無しさんNGNG
>>832
ちょっとワラタw
0834デフォルトの名無しさんNGNG
>>831
> J2EE Development without EJB 読んだ?
いいえ。
DIConって、例えばSeasarとかで提供されてる奴ですか。
ライトウェイトなコンテナということで、結構興味は持っていたのですが、
今どきどれぐらい使われてるんでしょう。
0835デフォルトの名無しさんNGNG
>>834
その程度の知識で>>826を言い切る所にお前の問題がある事に気付け。

とりあえず、Springを使ってるプロジェクトはいくつか知ってる。
0836デフォルトの名無しさんNGNG
>>835
ああ、SpringもDIConなのですね。なるほど。
0837デフォルトの名無しさんNGNG
でも、>>826って何か問題のあること、言ってるのかな?
0838デフォルトの名無しさんNGNG
そうだよね。
別のところでは言ってるけど。
0839デフォルトの名無しさんNGNG
>>837
EJBを利用する機会は昨今非常に減ってるよ。たまに使ってもMDBかSLSBくらい。
0840デフォルトの名無しさんNGNG
361氏がSpringの話してなかったっけ?
0841デフォルトの名無しさんNGNG
>>836
むしろSpringがDICon。なんでS2ではなくSeasarがでてくるか分からん。
0842805NGNG
俺が今携わってるプロジェクトでは、基本的に Spring + Hibernate、
Hibernateで吸収できない複雑な問い合わせ(帳票系とか)はDbUtilsの
カスタム実装とSpringのDaoSupport組み合わせて使ってる。
Hibernate使ったDAO実装はテスト書く必要ないから楽。ほぼ自動生成+α。
もちろんそれを使うService層でのテストは必要なんだが。
0843デフォルトの名無しさんNGNG
>>842
ここではそういう話が非常に参考になると思うが・・・
Map厨には伝わらないよ。特殊なケースとか言いそう。
0844デフォルトの名無しさんNGNG
>>841
あ、しつれい。S2のつもりでした。
>>842
「DbUtilsのカスタム実装」というのは、Handler層のカスタム実装を
行っているという意味ですか。
0845デフォルトの名無しさんNGNG
>>829
>>843
こういう人たちは、まじめに回答してくれている人たちの
行為を結局はバカにしているのと同じですな。
0846デフォルトの名無しさんNGNG
>>844
Handler層って何?
0847デフォルトの名無しさんNGNG
>>845
まあ、謙虚に学んでけよ。そのうち反応も和らいでくるぞ。
0848デフォルトの名無しさんNGNG
>>846
あ、ResultSetHandlerをカスタムでインプリしているのかという意味ですね。
0849デフォルトの名無しさんNGNG
>>847
いやまあ煽ってるからこんだけレスが返ってくるという
事情はあるんですがね(w
0850デフォルトの名無しさんNGNG
>>848
純粋にDbUtilsを拡張してるだけじゃないの、Handlerに改良の余地あるっけ?
0851デフォルトの名無しさんNGNG
>>849
実の無いレスでスレが消費されても意味が無いよ。
実際HibernateやCayenneとかの話に全然深く入っていかない。
0852805NGNG
>.>844
そういうことになるのかな。
DbUtils2.0のBeanProcessorをいじって独自のマッピングルールを追加した上で、
SpringのMappingSqlQueryの継承クラスに使わせてる。
開発者にSQLとModelBean用意させれば勝手に結果セットがそのModelBeanに
詰め込まれるってとこです。
Springの作者的にはあまりやって欲しくないらしいけど、マッピングルールが固まってるなら
別にいいんじゃないかと思ってる。
0853デフォルトの名無しさんNGNG
>>852
なるほど。
って、よくみると>>805さんはあれか。
私は同じMap厨なのですが、えらい口調の変わり方なので
最初わからなかったですよ(w
0854デフォルトの名無しさんNGNG
>>852
MappingSqlQuery知らんかった。こんなのもあるのね。
0855デフォルトの名無しさんNGNG
>>853
なんだか嫌らしい書き方する人ですね。
0856デフォルトの名無しさんNGNG
同じMap厨・・・勝手に仲間にされとる。
0857デフォルトの名無しさんNGNG
あ、そういう意味じゃないのか。
0858デフォルトの名無しさんNGNG
>>857
日本語が読みにくいからしょうがない。
0859デフォルトの名無しさんNGNG
Hibernateチームの人間が、EJB3.0の仕様策定チームに参加してるんだっけか。
んで、EJB3.0では、否が応でもHibernate的な設計になっていくわけだが。
0860デフォルトの名無しさんNGNG
>>859
>>208
0861デフォルトの名無しさんNGNG
何でもいいから、O/R Mapping 使う気ないならこんなとこまできて
わめき散らさんで。そんなヒマあったら Map でもいじくってて
下さいよ。こっちもアータの御高説聞く気もヒマもないから。
...あ、ひょっとしてスレタイ読めないのかな。
0862デフォルトの名無しさんNGNG
>>535でスレ違いでは無いとおっしゃられているようです。
0863デフォルトの名無しさんNGNG
ま、本質的な話題を振ることができないから、関係ない話題で場を乱してかまってもらって喜んでる、哀れなオヤジだから。
0864デフォルトの名無しさんNGNG
うーむ、随分と伸びてるから熱いスレなのかと思ったら、実は寒いスレだっだんだな・・・
0865デフォルトの名無しさんNGNG
まあ、老害をもろに見た感じだな。
0866デフォルトの名無しさんNGNG
明日は我が身だよ
0867デフォルトの名無しさんNGNG
あぁならないように、日々努力、ってことだな。
0868デフォルトの名無しさんNGNG
>>867
同意
0869デフォルトの名無しさんNGNG
MAP厨ってなに?

ストレージングの形式なんて、それこそ要件次第だとおもうんだけど、
なんでもめるの?決定くつがえす権限があることなんてナイデショあんたら。
0870デフォルトの名無しさんNGNG
上のほうにエンティティのMap実装なんてありえないとか書いてあるけど、
なんか話が食い違ってない?

エンティティクラスの実装方法の話じゃなくて、永続化形式の話でしょこれ。
型制約を利用してプログラムを静的に安全にするか、Mapみたいななんでもアリ
にしてそのかわりあとでひどい目にあいそうな実装にしちゃうかなんて話も、
実は単なる選択でしかないと思うが、それは別の話じゃないのけ。
0871デフォルトの名無しさんNGNG
>>869
ORマッピングなんか必要ない。
アクセッサだけのクラスなんかムダ。
ムダなもん自動生成するORマッピングなんか、もっとムダ。
すべてMapで解決できるだろ。
品質の低いコードも、ちゃんとテストするから大丈夫。


という持論の人。
0872デフォルトの名無しさんNGNG
>>871
ウヒョ。
巨大なデータが入ったRDBのインスタンスがすでにあるときとか、
どうすんですか、それ。
0873デフォルトの名無しさんNGNG
>>870
> それは別の話じゃないのけ

その、別の話をするスレなんだが。
マッピングスレだし。
0874デフォルトの名無しさんNGNG
>>872
Mapで大丈夫。


らしい。
0875869=870=871NGNG
ああ、よくわかりました。

スレ読まなくてスマソ。
0876871NGNG
( .3.) ヌェー 871はオレだYO
0877デフォルトの名無しさんNGNG
 あのな、おれO/R Mapping大好きだけど、でも型保証とO/R Mappingを結びつけて
O/R Mappingの利点とするのは違和感があるな。

 たとえばEnterprise Object Frameworkはデータ取得する時にObject型で返すのが
普通なんで、かならずキャストが入るし(型保証は弱いわな)、Enterprise Objectは
内部表現としてマップ使ってんだぜ。

 でもJava プログラムとDBとの関連づけがあっさりできるとか(マップを意識する必要ないし)、
キャッシングとかリレーション設定の簡便性とか、DBに対する透過性とか、複数DBを意識する
ことなく統合できたりとか、そういう利点があってこそのO/R Mappingだろ。しかもそれらの
利点を、簡単に利用できるところこそがウレシイわけだろ。

 マップで十分って方も、O/R Mappingは型安全性が、ってのも、なんか論点ずれてないか?
 まあここは2ちゃんではあるわけだが...

0878869=870=872NGNG
>>871
ゴメン間違えた。
>>877
>まあここは2ちゃんではあるわけだが...
そういう風に納得しました、ワタシ。
0879デフォルトの名無しさんNGNG
>>877
よく読んでもらうとわかるが、ORMappingは型安全性が・・・という議論じゃない。
型安全性なんか無意味だ、アクセッサだけのクラスなんか無意味だ、マップで十分だ、という意見に対する反論。
ORマピングに関しては>>317みたいな意見もすでに出てるわけで。

ORMappingは無意味だ、というのも入り混じって、変なことになってる。
0880デフォルトの名無しさんNGNG
>>879
そーそー。型安全性なんて、O/R Mapping の数ある利点のひとつって
だけなのにね。
Map に何でも突っ込んだら型安全性 *すら* (簡単には) 保証できねえじゃん!!
って話なのに、ネチネチ粘着しおってからに。

そういう部分にくだくだ神経使いたくないからこそ便利なツールとか
使うわけなのに、かの人は典型的な「何でも全部自分でやらないと気が
済まない」タイプの人なんでしょう、恐らく。
ならクラスライブラリも使わずに全部自作すりゃいいのにね!!
若しくは cat > Foo.class でダイレクトに中間コード書け。
0881デフォルトの名無しさんNGNG
もちろんJakarta-Commonsなんて、ライブラリのメンテナンス終了が怖いので、使えるわけアリマセン。
0882805NGNG
>>870
>>872
その通り。俺も型安全がORMの利点であるとは一言も言ってない。
エンティティのMap表現なんて、OO(というよりむしろJava)の利点を捨てる上に
必要なはずの複雑さ(なんかこういう言い方も違和感があるが)まで切り捨てて
やるようなことじゃないって言ってるだけ。
0883805NGNG
ありゃ。アンカー間違えた。
>>870
>>877です。
ついでに
>>880もつけとくか。
0884デフォルトの名無しさんNGNG
まあ、普通は自分の意見が誰にも同意されてない事に気づくと思うんだが。
彼はそれでも負けないからね。強靭な意志を持ってるよ。
0885デフォルトの名無しさんNGNG
しかし、不毛有毛に限らず、すげー伸びだな。。。
前スレなど消費するのに1年以上かかったのに(w
0886デフォルトの名無しさんNGNG
裾野が広がったのだろう。
ということにしておきたい。
0887デフォルトの名無しさんNGNG
職場でも話題です、このスレ。。
0888デフォルトの名無しさんNGNG
学校でも話題です、このスレ。。
0889デフォルトの名無しさんNGNG
お店でも話題です、このスレ。。
0890デフォルトの名無しさんNGNG
彼女とも話題です、このスレ。。
0891デフォルトの名無しさんNGNG
街中で、評判です、このスレ。。
0892デフォルトの名無しさんNGNG
全米でNo.1ヒットです、このスレ。。
0893デフォルトの名無しさんNGNG
祖父母とも話題です、このスレ。。
0894デフォルトの名無しさんNGNG
参院選の争点でした、このスレ。。
0895デフォルトの名無しさんNGNG
全米が泣きました、このスレ。。
0896デフォルトの名無しさんNGNG
夜中、ひとりで見れません、このスレ。。
0897デフォルトの名無しさんNGNG
毎日、トイレでこっそり見てます、このスレ。。
0898デフォルトの名無しさんNGNG
お母さんにみつかって、隠されてしまいました、このスレ。。
0899デフォルトの名無しさんNGNG
うちのポチもお気に入りのようです、このスレ。。
0900デフォルトの名無しさんNGNG
900get
0901デフォルトの名無しさんNGNG
医者に控えるように言われました、このスレ。。
0902デフォルトの名無しさんNGNG
最近、このスレのおかげでタバコやめられました。。
09031NGNG
次スレのテンプレ用意しますた。
有益な情報がてんこ盛りです。
>>47>>598氏のドキュメントへのリンクも取り込ませてもらいますた。
今夜中に埋まるでしょうか?
それとも、あと100スレ近くが消費されるのは、今から数ヶ月後でしょうか(w

とりあえず次スレでは、網走番外地としてperlやRuby用のO/R-mappingなども
参考程度に入れてみます。

んじゃ、漏れは帰るね〜。みんな乙。ノシ
0904デフォルトの名無しさんNGNG
>>903
Mapで十分、って主張してみれば、埋まるよ。
0905デフォルトの名無しさんNGNG
じゃあ言ってみよう

A:カーナビって便利だよねえ
B:Mapで十分
0906デフォルトの名無しさんNGNG
>>905
不許可
0907デフォルトの名無しさんNGNG
A: 電気掃除機って便利だよねえ
B: Mop で十分
0908デフォルトの名無しさんNGNG
>>907
さらに不許可
0909デフォルトの名無しさんNGNG
何か急にMap厨に荒されても無理のないスレに思えてきた
0910デフォルトの名無しさんNGNG
オマエのせいだ、907
0911デフォルトの名無しさんNGNG
ドトネト用に移植されたHibernateもあるね。
「NHibernate」
ttp://nhibernate.sourceforge.net/
0912デフォルトの名無しさんNGNG
MSの枠組みとして、ORマッピングのしくみってあるのかな?
0913デフォルトの名無しさんNGNG
ORマッピングという明示的なものは無いんじゃないかな?(って未確認)
ORM.NETなんていう商用製品をはじめ、.NET用のORマッピング製品がいくつか出てる。
0914デフォルトの名無しさんNGNG
MSの世界は、MSと非MSの差がでかいからねぇ。
存在しないのと同じ感じがする。Delphiといい・・・。
探せば必ずあるけど、非MSのものは、存在感が相対的にとことん薄い。
0915デフォルトの名無しさんNGNG

C#の次期次期版でそれに近いことをやろうとしてる。
Programming data in C# 3.0
http://channel9.msdn.com/ShowPost.aspx?PostID=10276
Unifying Tables, Objects and Documents.
http://research.microsoft.com/users/schulte/Papers/UnifyingTablesObjectsAndDocuments(DPCOOL2003).pdf

ただJavaでこれだけやられていて競争もおきてるところに
そんだけ後発なんだから相当すごくないとまたこけ。。
0916デフォルトの名無しさんNGNG
>>915
いや、MSとしては、Javaの方の実装や仕様が安定したところで真似したらいいだけだから。
0917デフォルトの名無しさんNGNG
なんか、やり方見てると、

 Sun(Java) = 日本のIT業界や産業界が創り出す最新(?)技術
 MS(.NET) = それをパクってウリナラ一番宣言する韓国

って感じがしてならないのは気のせい?
0918デフォルトの名無しさんNGNG
Javaを作ったのはSunだが、Javaをうまく利用しているのはIBMだと言ってみる
0919デフォルトの名無しさんNGNG
そして感謝されてる。IBMウマー


それにしても、MSの特許問題。
控訴して高裁で争ってる間に、シェア奪ってしまったモン勝ち、っていう魂胆がミエミエ。
0920デフォルトの名無しさんNGNG
そうそう。
訴訟に勝というというより、ライバル会社つぶすのを目的とした行動しかとらんしな。
0921デフォルトの名無しさんNGNG
最近はやりのIP電話業界、お尻の小さなIP電話業界なんかじゃ、
今までのWindows環境一辺倒から、Java用SDKへのシフトが始まってるようだね。
JTAPI対応とかが増えてきた。
んで、漏れが今度参加する案件では、企業向けIP電話導入に際したアプリ開発時に、
JavaとHibernateで行くような雰囲気。
0922デフォルトの名無しさんNGNG
>>917
つうか、ソフトウェアの世界では日本パクリまくりじゃねぇ?
OS、DB、言語、フレームワーク。。

せいぜいruby程度か。。
0923デフォルトの名無しさんNGNG
>>922
英語をパクってるね
0924デフォルトの名無しさんNGNG
パクーリ大国、Japan!万歳!!
0925デフォルトの名無しさんNGNG
>>922
> ソフトウェアの世界では日本パクリまくりじゃねぇ?

なにを?
ちゃんと新しいアイデアで、相手の特許に触れないように行儀よくやってると思うが。
0926デフォルトの名無しさんNGNG
>>925
昔はIのメインフレームを各社がパクリまくりで
事件になっちまったわけだが
0927デフォルトの名無しさんNGNG
>>926
結局、昔話?
0928デフォルトの名無しさんNGNG
アイデアレヴェルのパクリなら皆やってるだろ。
つか、人の仕事を礎にしていかないと業界に進歩や未来がない。

オープンソースが何のためにあると思ってるんだ。
0929デフォルトの名無しさんNGNG
なにをパクリというかだな。
答えのない問いではあるが。
0930デフォルトの名無しさんNGNG
ソフトウェアに関していえば、「大幅」な輸入超過なんだけど。

裏をかえせば、日本のソフトウェアは世界で必要とされていませんから。
0931デフォルトの名無しさんNGNG
ゲームだけはべつだとおもうがそれも過去形になりつつあるかな
0932デフォルトの名無しさんNGNG
確かに、モータルコンバットにかなう国産ゲームはそうそう無いよね。
大江戸ファイトがギリギリ届いてるかな。
0933デフォルトの名無しさんNGNG
>>930
MSやIBMが幅を利かせている以上、しかたのないこと。
アメリカ以外で、輸入超過してない国はあるのか?

> 裏をかえせば、日本のソフトウェアは世界で必要とされていませんから。

分野による。
0934デフォルトの名無しさんNGNG
久しぶりに、Hibernateの特集が一歩進んだ。
ttp://www.atmarkit.co.jp/fjava/rensai3/ormap03/ormap03.html
0935デフォルトの名無しさんNGNG
しかし、この記事はちょっとボリューム少なすぎないか?
0936デフォルトの名無しさんNGNG
Cayenne1.1って、7/12にbetaになってたのね
0937デフォルトの名無しさんNGNG
おまいら、BTRONかLinux使え。
0938デフォルトの名無しさんNGNG
超漢字?
0939デフォルトの名無しさんNGNG
超漢字なORM萌え〜♪
0940デフォルトの名無しさんNGNG
>>47
今さらだけど、あんた神
0941デフォルトの名無しさんNGNG
JOINがねぇ・・・
0942デフォルトの名無しさんNGNG
しかしこの連休は盛り上がらなかったな。
0943デフォルトの名無しさんNGNG
仕事で使ってるやつが多いなら、
盛り上がらないってことは休めてるってことかもしれないから、
だとしたら問題なし(・∀・)
0944デフォルトの名無しさんNGNG
2chみてるヒマなんかない、ってこともありおり。
実際はMap厨がきてないからというだけなんだけどね。
0945デフォルトの名無しさんNGNG
Mappy
0946デフォルトの名無しさんNGNG
>>945
ワラタ
これからMap厨および>>100はMappyとよぼう
0947デフォルトの名無しさんNGNG
>>946
じゃO/Rマッピング派はニャームコな
0948デフォルトの名無しさんNGNG
しかし、一番笑うべきところは、ここの参加者全員に意味がわかるというか、そこで育った世代というところだ。
0949デフォルトの名無しさんNGNG
テニスを差して、よく無限増殖したね。
0950デフォルトの名無しさんNGNG
モナ
リザ

に涙。
0951デフォルトの名無しさんNGNG
S2JDBC。
S2DAOに備えて。
ttp://garbagetown.zive.net/eewiki/Viewpage.do?pid=@53324A444243
…といってもS2使わないと無意味な悪寒。
0952デフォルトの名無しさんNGNG
S2Hibernateとか。
0953デフォルトの名無しさんNGNG
S2Dao出てるよ
いい感じ
0954デフォルトの名無しさんNGNG
>>953
新バージョンでたみたい。
http://homepage3.nifty.com/seasar/s2dao.html
0955デフォルトの名無しさんNGNG
O/R-Mappingツールを使って、ロジックを分離した場合、
ポリモルフィズムの恩恵は受けられないの?
0956デフォルトの名無しさんNGNG
>>955
知るか
0957デフォルトの名無しさんNGNG
>>955
Cayenne の 1.1 では恩恵受けられるらしい。が、自分ではまだ試してない。
0958デフォルトの名無しさんNGNG
藻前らDbUnitつこぅーてるか?

Jakarta CommonsのDbUtil, トルク、Poolなどつこぅーてるか?


DbUnitなんてしらんかったーよ。
ServletのテストすらろくにしておらずやっとCactus, MockObjectsなんて
もんを知ったもんだ。
0959デフォルトの名無しさんNGNG
>>958
既に時代遅れだよ、あんた
0960デフォルトの名無しさんNGNG
周回遅れだな。
DBMagazineですら、DbUnit一年前にとりあげてたのに。
0961デフォルトの名無しさんNGNG
>>958
> DbUnit、DbUtil, トルク、Pool、Cactus, MockObjects
使ってる使ってないは別にして、古い話題を持ち出すなよ。
それか最近 Java 始めた人?
0962デフォルトの名無しさんNGNG
じゃ、何が新しいんだ?
0963デフォルトの名無しさんNGNG
@ITでカイエン
0964デフォルトの名無しさんNGNG
SqlMAP2
0965デフォルトの名無しさんNGNG
>>946
懐かしいな。ゴムみたいなのに乗って下に落ちる奴か。

>>948
20代なら全員知ってるだろ 
0966デフォルトの名無しさんNGNG
>>965
しらねーじゃねーかw
0967デフォルトの名無しさんNGNG
ゴムが切れたら落ちて死ぬだろ。

ファミコンのマッピー、マッピーランドをやったことがある。
マッピーキッズとかもあったけどやったことがない。
0968デフォルトの名無しさんNGNG
>>960
たった一年で古いものなのか。
職場にいるプログラマでは知らない香具師がほとんどなのに。
0969デフォルトの名無しさんNGNG
Next Threadはどう立てる?

どうでもいいなら俺がPrevious Threadを参考にしてそのまま立てる
0970デフォルトの名無しさんNGNG
もしかしたら、あと10分以内にnext threadを構築するかもしれない 


0971デフォルトの名無しさんNGNG
もう次スレたてるぞ 
0972デフォルトの名無しさんNGNG
>>968
いやだから。
>>958 が最近知ったとか書いてて、おまいらこんなスゲーもん
知ってるかみたいな書きかたするからだよ。よほど感動したんか知らんけど。
0973デフォルトの名無しさんNGNG
>>972
いやなのか?
0974デフォルトの名無しさんNGNG
知ってるだけって奴多いよな
0975デフォルトの名無しさんNGNG
>>972
職場にいる香具師が知らないだから書いてみたんだがのう。
早くから知っていればテストであんなにつらそうな顔をすることもなかったんだろうなあと思ってね。
0976デフォルトの名無しさんNGNG
Java⇔RDBのMapping-Frameworkを語るThre Vol.3
http://pc5.2ch.net/test/read.cgi/tech/1090653286/
0977デフォルトの名無しさんNGNG
>>968
古い、というより、例えばTorqueの場合だと、他にいいものが出てきたので、いまさら使いどころがない。
0978デフォルトの名無しさんNGNG
>>977
torque-genはまだ使えるよ。
DBから吸い取ったテーブル名/カラム名から
ソースやファイルを自動生成する時に。
0979デフォルトの名無しさんNGNG
Torque本体がかわいそうだΣΣ(゚д゚lll)
0980デフォルトの名無しさんNGNG
>>979
同情なんて、真っ平ごめんでぇい。
0981デフォルトの名無しさんNGNG
Torqueの作者って死んだんだっけ?
0982デフォルトの名無しさんNGNG
>>981
作者なのかわからんが、この人のこと?
ttp://www.apache.org/foundation/martin.html
0983デフォルトの名無しさんNGNG
the lead developerって書いてあるね。
やはり、オープンソースで共同開発とはいえ、個人の能力には強く依存するんだな。
0984デフォルトの名無しさんNGNG
トーキーはそんなに使えないのか?
0985デフォルトの名無しさんNGNG
使いやすさランキングでは

カイエン > ハイバネート > トーキー

なのか?

0986デフォルトの名無しさんNGNG
Torqueは去年の9月以降開発がとまっている。
だから、去年の時点ではつかえたんだけど、他が伸びてきて相対的に使えなくなってる。
とっかかりでは
 カイエン > ハイバーネート
だけど、実際に使えるランキングは
 ハイバーネート >> カイエン
となりそう。
カイエンはリファレンス見る限り、窮屈に感じた。

# ネタにマジレスカコワルイけど、トルクね。
0987デフォルトの名無しさんNGNG
# ネタにマジレスカコワルイけど、キャイーンね。
0988デフォルトの名無しさんNGNG
>>987
それは、マジレスにネタレス
0989デフォルトの名無しさんNGNG
結論としてはこんなんか。
ハイバネ > キャイーン > トーキー
0990デフォルトの名無しさんNGNG
# ネタにマジレスカコワルイけど、ハイバナットウね。
0991デフォルトの名無しさんNGNG
>>990
それはメシにマジオカズ
0992デフォルトの名無しさんNGNG
トーキーは、もう開発進まないだろうなぁ。

っていうか、夏休み中の子どもがみたら、トーキーだとマジで思うじゃないか。
0993デフォルトの名無しさんNGNG
>>990
ハイパナットウの構築方法はここでみつけた。
ttp://www4.plala.or.jp/hiro_k/Report/Present/p167_top.htm

まだ、使用方法とかがないから、使えんが。
発展途上のプロダクトなので、今後に期待。
0994デフォルトの名無しさんNGNG
>>993
これはいいドキュメントだな。GJ!
0995デフォルトの名無しさんNGNG
ゴキブリみたいだな>ハイバネ
0996デフォルトの名無しさんNGNG
>>993
強烈だな。これがハイパナットウか。
0997デフォルトの名無しさんNGNG
いくら991でも、マジオカズにはできまい。
0998デフォルトの名無しさんNGNG
おれにはハイバネートがヒルベルト変換に見えた
0999デフォルトの名無しさんNGNG
埋まってしまーう!(スレが)
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。