Java⇔RDBのMapping-Frameworkを語るThre Vol.3
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNG「Java⇔RDBのMapping-Frameworkを語るスレ Vol.2」
http://pc5.2ch.net/test/read.cgi/tech/1086315004/
「Java⇔RDBのMapping-Frameworkを語るスレ
ttp://pc5.2ch.net/test/read.cgi/tech/1049030272/
●まずは、基礎知識と技術選択指針など
[The Fundamentals of Mapping Objects to Relational Databases]
(RDBに対するオブジェクトマッピングの基礎(英語))
ttp://www.agiledata.org/essays/mappingObjects.html
[O/R-Mappingツールの比較サイト(英語)]
ttp://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison
[Catalog of Patterns of Enterprise Application Architecture]
ttp://www.martinfowler.com/eaaCatalog/
詳細は、>>2以降に。
0893デフォルトの名無しさん
2005/10/11(火) 11:36:54>808 参照。
というかここ参照
http://www.hibernate.org/hib_docs/tools/ant/index.html
オプションは使ったことないんでしらん
0894デフォルトの名無しさん
2005/10/11(火) 11:56:02ありがとうございます。えーと、Toolsはjarの中身から取り出して使ってます。
URLにあったantタスクの使い方の中に、2.*の時に使われていたconfigurationの設定とその使い方に関する記述が無いため
3.*になってどっか逝ってしまったかな…と思った次第です。
0895デフォルトの名無しさん
2005/10/13(木) 09:43:08あ!すいません。記述ミスでした。
#formbean.innerbean[0].fireld# です。
strutsやvelocityでは、[0]は配列でもリストでも可能でしたのでibatisでもと思ったのですが、
そんなメソッドはないといわれ、[0]をメソッド名としてみてしまいます。
iterateタグでも一部で切るのですが、配列の場合はだめでした。
0896デフォルトの名無しさん
2005/10/17(月) 17:30:27Hoge hoge = (Hoge)session.load(Hoge.class, primaryKey);
みたいな感じで取得出来るのですが、主キー以外のカラム値しか分からない場合、
Hogeのオブジェクトにそのカラムの値のみをセットして、DBから一致するデータ全てを
取得する方法はあったりするのでしょうか?
Hoge hoge = new Hoge();
hoge.setVal("aaa");
List list = session.何らかのメソッド(hoge);
みたいな感じで。
もし、こういうのが出来ない場合は、テーブルのカラム数に応じた処理を書かないと
いけないのでしょうか?
0897デフォルトの名無しさん
2005/10/17(月) 18:04:310899デフォルトの名無しさん
2005/10/24(月) 12:04:44今回の案件でHibernate使うか迷っててコレが出来れば使おうと思うんだけれど。
0900デフォルトの名無しさん
2005/10/24(月) 12:14:370901デフォルトの名無しさん
2005/10/24(月) 14:17:350902デフォルトの名無しさん
2005/10/24(月) 15:11:37お客様からコード洗替のお知らせが。とか。
0903デフォルトの名無しさん
2005/10/24(月) 16:23:500904デフォルトの名無しさん
2005/10/24(月) 19:11:51今更ながら更新されておる喃。
0905デフォルトの名無しさん
2005/10/24(月) 23:30:47キーなしテーブルとか出来上がっちゃったりすること多い
0906デフォルトの名無しさん
2005/10/24(月) 23:35:540907デフォルトの名無しさん
2005/10/25(火) 00:12:480908デフォルトの名無しさん
2005/10/25(火) 11:14:50updateするHQLを書けばイケるっぽかった
0909デフォルトの名無しさん
2005/10/25(火) 11:54:14Reader reader = Resources.getResourceAsReader(”設定ファイル”);
SqlMapClientBuilder.buildSqlMapClient(reader);
しているのですが、
一回実行し、設定ファイルを変更して、もう一度実行させても
設定ファイルの変更が更新されません。
修正した設定ファイルを毎回読込ますためにはどうしたらよいでしょうか。
0910デフォルトの名無しさん
2005/10/25(火) 13:59:46実は違う位置にある設定ファイルの内容を変更しているとか。
readerの中身をダンプして、本当に編集した物を読み込んでいるか確認してみては。
そもそも1回実行するごとに別のプロセスになるから、毎回読み込ませないほうが
難しいと思いますが(何か常駐してるとか)。
0911デフォルトの名無しさん
2005/10/31(月) 00:05:36>Hibernate3 + Java5 で、マッピングにEnum使えない様なんですが、あってますか?
先週からHibernateを学習し始めたのですが、3.1では使えるみたいですね。
UserTypeというインタフェースを実装して、EnumとDBのマッピング方法を
実装する必要があります。このページにあるGenericEnumUserTypeを流用
しても良いでしょう。
http://www.hibernate.org/272.html
0912デフォルトの名無しさん
2005/11/03(木) 00:54:52いろんな条件でもかなり柔軟に設定できます。
これ結構お勧めかも・・・
0913デフォルトの名無しさん
2005/11/03(木) 15:14:49<isNotNull>とかのDynamic SQL周りでしょうか。
複雑なSQLは書いてないのでiBatisでも気にはなりませんでしたが
具体的にはどういう感じになるのでしょうか。
0914デフォルトの名無しさん
2005/11/03(木) 20:11:26俺は >912 じゃないが、分岐とループの明快さだろ。
SQL のテンプレ問題は HTML の動的デザイン問題に
類似している部分がある。
ってかもう、SQL も JSTL を標準に(ry
0915デフォルトの名無しさん
2005/11/04(金) 17:04:45オレもibatis遣いなので興味津々。
どこかにsampleをうぷしてくれたら、今後あなたのいる方向に足を向けて寝ません。
0916デフォルトの名無しさん
2005/11/06(日) 01:29:27product_categoryというテーブルに、id,sub_id,name があって、id と sub_id が複合キーであったとします。(他のテーブルにも複合キーが至る所にあります)
middlegenを使うとcomposite-id タグへ自動的にid と sub_id がマッピングされ、hbm2javaを使ってPOJOを生成すると
〜〜〜PK.javaというクラスも生成されています。
このテーブルへデータを追加して保存をしようとすると、
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): クラス名
とエラーが出ます。idとsub_idのうち、idはDB側のシーケンスを使って自動生成しています。sub_idもストアドを使って自動生成します。
この場合、hbmファイルはどのように記述すればよいでしょう?
アプリ側で〜〜PK.javaのインスタンスを生成してPostgreSQLからいちいちシーケンスなどの値を取得してインスタンスへセット……
なんてことしないとダメなんですか?
0917916
2005/11/06(日) 01:45:297.4 複合識別子としてのコンポーネント の部分で、
複合キーを生成するためにIdentifierGenerator を使用することができません。代わりにアプリケーションはそれ自身の識別子を割り当てなくてはなりません。
とありますた(;´д`) まぁ仕方ないか…お騒がせしました
0918デフォルトの名無しさん
2005/11/06(日) 01:50:06好きのようにIdentifierGeneratorを作れば大抵の場合幸せになる。
0919デフォルトの名無しさん
2005/11/07(月) 10:43:52select
条件1
name
条件2
age
の設定ファイルで、初回条件1で、2回目条件2だと、条件1が使用される仕様になっているようです。
キャッシュを無効にする方法知っていませんか。
0920デフォルトの名無しさん
2005/11/07(月) 17:10:13君の書いているのは例えば
<isNotEmpty prepend="and" property="employeeName">
EMPLOYEENAME like '$employeeName$%'
</isNotEmpty>
<isGreaterThan prepend="and" property="deptNo" compareValue="0">
DEPTNO = #deptNo#
</isGreaterThan>
こんな感じのソースのこと?
もしそうなら、オレの所ではキャシュされてる云々は発生してないけど・・・
も少し詳細な話と、『クエリーのキャッシュを使用するようで』の根拠を
書いてみて。
0921デフォルトの名無しさん
2005/11/08(火) 22:37:26CLASSPASSやjavaの実行時引数か何かでファイル名を指定することはできませぬか。
0922デフォルトの名無しさん
2005/11/08(火) 23:16:53http://www.hibernate.org/hib_docs/v3/api/org/hibernate/cfg/Configuration.html#configure(java.io.File)
0923デフォルトの名無しさん
2005/11/08(火) 23:24:46ありがd。自前で実装せにゃあかんのね。がんばってみる。
0924デフォルトの名無しさん
2005/11/11(金) 14:33:45<many-to-one name="fuga" unique="false" not-null="false" update="false" insert="false" column="fuga_id" />
と指定してもプロパティの値に相手が無いと
No row with the given identifier exists: [my.Fuga#1234]
とか怒られるんだが。
0925デフォルトの名無しさん
2005/11/11(金) 14:54:53one-to-oneでどーにかなりそうなふいんき、なんかキモいけど
0926デフォルトの名無しさん
2005/11/12(土) 00:33:56Hibernate3ならnot-found="ignore"
0927デフォルトの名無しさん
2005/11/16(水) 22:37:20Parent と Child が1対多結合してるときにHQLで
from Parent p where size(p.childs) = 0
とやると子供がいない親が抽出される(childrenじゃないのは気にするな)
しかし、orで条件を追加して
from Parent p
where
size(p.childs) = 0
or
p.childs.age = 13
とするとorなのになぜか13歳の子供を持つ親しか出てこなくなる
これは仕様だろうかバグだろうか?
0928デフォルトの名無しさん
2005/11/17(木) 00:58:040929デフォルトの名無しさん
2005/11/25(金) 02:15:130930デフォルトの名無しさん
2005/11/25(金) 02:52:20>Toplinkがオープンソースになった
マジで?本当ならうれしいなあ。
今Googleで検索したり、OTNを見たりしたけど、OpenSourceと書かれた
情報は見つけられなかったよ。どっかに情報ない?
0931デフォルトの名無しさん
2005/11/25(金) 04:40:34ひょっとして、
ttp://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20050714/164660/
の
米Oracleは,EJB3.0のPersistence API(EJB3.0仕様の一部である
永続化機能だけを切り離し,O/Rマッパー仕様として利用できるように
した)を,同社のO/RマッパーTopLinkの上で実装し,オープンソース
としてProject GlassFish(後述)に提供すると発表。また,JSF
(JavaServer Faces)のオープンソース実装MyFacesのプロジェクトに
参加した。
という記述のことか?
0933デフォルトの名無しさん
2005/11/25(金) 11:35:07Oracle=>TopLink
BEA===>Kodo
JBoss=>Hibernate
で、
IBM===>???
IBMってどうするつもりなんだろうね。
まさかGeronimoで採用のOpenEJBに
開発陣をブチ込むとか?
0934デフォルトの名無しさん
2005/11/25(金) 12:20:37それ、TopLinkのオープンソース化じゃないんじゃないの?
0935デフォルトの名無しさん
2005/11/26(土) 01:22:46良く知らないんだけど....
EOFよりも良い?
0936デフォルトの名無しさん
2005/11/26(土) 02:10:29そのようですね。
TopLinkの一部は寄贈されるようですが、TopLinkは全然売り物のまま。
残念。
>>935
EOFは知らないけど、TopLinkは設定のGUIが楽で良い。
ただ、Oracleが買ったせいでOracle DBしかサポートしないことに
なっちゃってるのが他のDB使いたい人には問題だけど。
0937デフォルトの名無しさん
2005/11/27(日) 20:27:110938デフォルトの名無しさん
2005/11/30(水) 17:13:54貼っとく
http://www.ibm.com/jp/software/websphere/developer/ejb/guide/
0939デフォルトの名無しさん
2005/12/01(木) 02:38:490940929
2005/12/01(木) 04:04:400942デフォルトの名無しさん
2005/12/01(木) 08:48:24B バストみて
A あなたの
T ティンコから
I いっぱい
S 精子放出
どうもありがとうございました。
0943デフォルトの名無しさん
2005/12/01(木) 10:04:27本家に書いてあるぞ。これの一番下を嫁。
http://ibatis.apache.org/background.html
0944デフォルトの名無しさん
2005/12/01(木) 10:33:35大体質問に対してまともな回答がない時は、質問の仕方が糞か、誰も知らないか。
今回のように、少し調べれば分かるようなことを聞くとまともな回答は付かないだろうね。
0945デフォルトの名無しさん
2005/12/01(木) 11:16:28ぼくはアイバティスと読んでる
0947デフォルトの名無しさん
2005/12/03(土) 00:15:46JBossスレで、POJOの話をすると
刺客を送りつけられ殺し屋に暗殺されるということ
らしいが、なんでよ?
Hibernate使ってると暗殺されて行方不明扱いになっちまうのか?
0948デフォルトの名無しさん
2005/12/03(土) 00:29:04鮫島事件でぐぐれ。所詮その程度の話だ。
0949デフォルトの名無しさん
2005/12/04(日) 23:04:150950デフォルトの名無しさん
2005/12/05(月) 09:50:31できる。
まずはTutorial、Developer'sGuideの順に目を通せ。
0951デフォルトの名無しさん
2005/12/05(月) 19:28:08ドキュメント見るとnullの場合は自分が決めた値入れるの?
> <parameter property ="propertyName" [jdbcType="VARCHAR"] [javaType="String"]
> [nullValue="NUMERIC"] [null="-9999"]/>
<resultMaps>
<resultMap id="FooEntityResult" class="FooEntity">
<result property="FooCode" column="FooCode" />
<result property="FooName" column="FooName" />
<result property="HogeHogeFlg" column="HogeHogeFlg" />
<result property="CreateDate" column="CreateDate" />
<result property="UpdateDate" column="UpdateDate" />
</resultMap>
</resultMaps>
実は.netで開発してるんだけど資料が少なくて泣きそう。
javaの場合はどうやってるか参考にちょっと教えてもらえないかな?
0952デフォルトの名無しさん
2005/12/05(月) 22:50:13Super Thanks!
0953デフォルトの名無しさん
2005/12/06(火) 13:18:19DBのnull値はObjectの参照値nullになった気がするけど記憶に自信ないや。
ちょっと試してみてよ。(今ソースが手元にないのでゴメン)
余談だが、一ひねり必要なのは、いわゆる名称テーブルの行セットが
削除されてた時の関連Objectの対応かな。おれはSQLを
select
#employeeId# AS employeeId,
NVL(EMP.ENAME,'') AS employeeName
FROM DUAL
LEFT OUTER JOIN EMP ON EMP.EMPNO = #employeeId#
とやってしのいでいるけど、他のiBATIS遣いの方々はどうしてるの?
( OracleDialect丸出し失礼 )
0954デフォルトの名無しさん
2005/12/06(火) 16:13:54参照型であればnullになったはず。
問題はプリミティブ型の場合で、何も対処しないと例外になったはず。
なので、<result>にnullValue="false"(booleanの場合)を書きました。
0955デフォルトの名無しさん
2005/12/12(月) 23:33:41テーブルのカラムにdate[](配列)が定義されてんですけど
マッピング定義ファイルの書き方がわからんのです。
どなたかわかります?それとも無理なんでしょうか?
<property name="regularDate" type="java.util.Date[]">
<column name="regular_date"/>
</property>
0956デフォルトの名無しさん
2005/12/13(火) 12:46:320957デフォルトの名無しさん
2005/12/13(火) 23:05:090958デフォルトの名無しさん
2005/12/14(水) 21:08:18今回、Java⇔Oracleで、基幹システム(見積、受注、発注、出荷、在庫など)を
組むことになったのですが、
こういうのって意外と顧客独自な複雑な仕様があるので、テーブルもすごい何十個とかあります。
全てのテーブルのMappinngクラスを作ったりするもんなんですか?
複数テーブルとリレーション組んだりする時もその都度Mappinngクラス作るんですか?
なんか、結局SQL文コードに埋め込む形になっちゃいそうなんですが・・・
実際どうなんでしょうか?
0959デフォルトの名無しさん
2005/12/14(水) 21:40:04マッピングクラスなんか自動で作ってくれるツールがあるわけだから、ケチらず全部作れば?
0960デフォルトの名無しさん
2005/12/14(水) 21:43:45ORマッピング使ったからといって、全部SQL使わずにやるわけじゃないし。
0961デフォルトの名無しさん
2005/12/14(水) 23:19:320962デフォルトの名無しさん
2005/12/14(水) 23:54:48EJB3のRI
0963958
2005/12/15(木) 09:27:28>>959-960
本当にマッピングが、仕様の変更に迅速に対応できるのか、
マッピングとSQLの混在で、中途半端にならないか
という事が不安です。
逆に、こういう時はマッピングで、この時は、SQLとかいう
推奨の取り決めなどあるのでしょうか?
>>961-962
DB2やpostgreSqlも視野に入れてるので今回は使わない予定です。
0964デフォルトの名無しさん
2005/12/15(木) 09:48:56既存のDBを使わなくてはならい。そのDBがまんまOOにするには設計的に向いてない。
慣れないORMより目に見えるSQL。そんな君ならiBATISはどうだ?
PreparedStatementより遥かに楽だぞ。
http://ibatis.apache.org/
0965964
2005/12/15(木) 09:56:21つまりOracleDB以外でもOKなオプソになる。
GlassFishでぐぐってみて。
0966デフォルトの名無しさん
2005/12/15(木) 12:41:24> 逆に、こういう時はマッピングで、この時は、SQLとかいう
> 推奨の取り決めなどあるのでしょうか?
1件単位の処理はマッピング
複数レコード一括処理はSQL
抽出はxQL
0967958
2005/12/15(木) 14:10:25iBATISいいですね、SQL部分とロジックを分けれるので、管理も楽そうです。
>>965
TopLinkとGlassFishは、調査中です。難しそうですね・・・
>>966
>複数レコードの一括処理
ってのは、いわゆるバッチ系でしょうか?
0968デフォルトの名無しさん
2005/12/15(木) 14:26:300969デフォルトの名無しさん
2005/12/15(木) 15:18:38たとえば、ある10件のデータを持ったテーブルの内容を画面に表示したいってのは
複数レコードの一括処理に入りますか?
0970デフォルトの名無しさん
2005/12/15(木) 16:03:45入らない。
けど、select書く。
0972デフォルトの名無しさん
2005/12/15(木) 16:16:04iBATISはSpringと組み合わせると、なお楽チンにソース書ける。
Spring提供の 『 iBATIS用お助けAbstractClass 』 を継承する形。
さすればカッタルイお決まりソース部分は親クラスがやってくれる。
iBATISのライバルに位置するものとしては、
S2DAO、SpringJDBCが存在する。
0973デフォルトの名無しさん
2005/12/15(木) 18:05:340974デフォルトの名無しさん
2005/12/15(木) 21:32:28DbUnitはO-Rマッピングと世界が違って
どうも何か違和感を感じるんだけど
0975デフォルトの名無しさん
2005/12/15(木) 22:18:51構文上selectを省略できるという意味?
0976デフォルトの名無しさん
2005/12/15(木) 23:42:46SQLのSELECT文の事です
0977デフォルトの名無しさん
2005/12/16(金) 00:27:29あとはHQLだった。
0978デフォルトの名無しさん
2005/12/16(金) 00:29:56結合の制御もできないしね。
「select」はほとんど省略したけど、HQLを使った。
今ならprojectionが導入されたからクライテリアを使うかもしれない。
0979デフォルトの名無しさん
2005/12/16(金) 06:48:19WHERE句も指定できるようにならないかな
0980デフォルトの名無しさん
2005/12/16(金) 07:43:160981デフォルトの名無しさん
2005/12/16(金) 10:02:590982デフォルトの名無しさん
2005/12/16(金) 10:12:42たとえば、得意先マスターだったら、今までは、
テーブル名:CUSTOMER
フィールド名:CUSTOMER_NAME
なんですけど、
マッピングを自動生成させると、
getCustomer_Nameっていうプロパティ名が生成されて気持ち悪いんですけど・・・
やっぱり、getCustomerNameであってほしいのですが、皆さんはどうしてますか?
データベースの推奨では、CUSTOMER_CODEとかアンダーバーで区切りなさいって良く聞くのですが・・・
0983982
2005/12/16(金) 10:22:35customer_nameは、
getCustomerNameにしてくれました・・・
アンダーバーを使おうと思います
0984デフォルトの名無しさん
2005/12/16(金) 12:13:06Java⇔RDBのMapping-Frameworkを語るスレ Vol.4
ttp://pc8.2ch.net/test/read.cgi/tech/1134701684/
0985デフォルトの名無しさん
2005/12/16(金) 17:56:01オイラもそこは気になってるage
0986デフォルトの名無しさん
2005/12/16(金) 18:17:26ORマッピングって流行ってるの?
0987デフォルトの名無しさん
2005/12/16(金) 20:58:03listを出そうとするとエラーになる。
そのままtoString()で出してほしいのですが。
0988デフォルトの名無しさん
2005/12/16(金) 21:03:580989デフォルトの名無しさん
2005/12/17(土) 11:39:11hibernateって複合プライマリキーのテーブルの扱いがへんでねえか?
0990デフォルトの名無しさん
2005/12/17(土) 13:45:38村社会と比べたら全然モヒカン族の方が好意的だよ。
モヒカン族はテクノクラシー(技術至上主義)
村社会は社会主義社会、北朝鮮的。昔のnifty時代によく見られた
その名残としてブログや2chが出るまでは
閉鎖的な掲示板で村社会的なものがよく見られた。まさに洗脳に近い。
モヒカン族は人を洗脳しない。つっこみは入れるが意見を受け容れる
まさにアメリカ的民主主義。
0991デフォルトの名無しさん
2005/12/17(土) 16:02:35複合プライマリーキーをフィールドに持つIDクラスで管理する。
IDクラスはequals()とhashcode()をオーバーライドする必要があるが、Hibernate Toolsを使えば自動でやってくれる。
こんなかんじなんだけど、どう変なの?
0992デフォルトの名無しさん
2005/12/23(金) 11:57:14Webアプリにはむかねえと思った
レス数が950を超えています。1000を超えると書き込みができなくなります。