1read 100read
2013年03月プログラム298: Java⇔RDBのMapping-Frameworkを語るスレ Vol.5 (950) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【コボル】COBOL不要論【ただのDSLだよね?】 (350)
初心者の俺が初めて覚えるプログラム言語 (472)
暇だから最強のメモ帳つくらね?【java】 (742)
pythonがこの先生きのこるには (747)
COBOL vs Java 2戦目 (956)
【漏れは】猫でもわかる質問スレ【猫以下です】 (494)

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


1 :2008/09/06 〜 最終レス :2013/03/02
前スレ:
Java⇔RDBのMapping-Frameworkを語るスレ Vol.4
 ttp://pc11.2ch.net/test/read.cgi/tech/1134701684/
過去スレ:
Java⇔RDBのMapping-Frameworkを語るThre Vol.3
 ttp://pc8.2ch.net/test/read.cgi/tech/1090653286/
Java⇔RDBのMapping-Frameworkを語るスレ Vol.2
 ttp://pc5.2ch.net/test/read.cgi/tech/1086315004/
Java⇔RDBのMapping-Frameworkを語るスレ
 ttp://pc5.2ch.net/test/read.cgi/tech/1049030272/

●まずは、基礎知識と技術選択指針など
 [The Fundamentals of Mapping Objects to Relational Databases]
  (RDBに対するオブジェクトマッピングの基礎(英語))
  ttp://www.agiledata.org/essays/mappingObjects.html
 [O/R-Mappingツールの比較サイト(英語)]
  ttp://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison
 [Catalog of Patterns of Enterprise Application Architecture (PoEAA)]
  ttp://www.martinfowler.com/eaaCatalog/
あとは>>2-5ぐらい

2 :
●O/R-Mapping Framework各種
 [HYBERNATE]
  ttp://www.hibernate.org/
 [Cayenne]
  ttp://cayenne.apache.org/
 [Torque]
  ttp://db.apache.org/torque/
 [iBATIS - SQL Maps]
  ttp://ibatis.apache.org/
 [Java Ultra-Lite Persistence (JULP)]
  ttp://julp.sourceforge.net/index.html
 [Jakarta Commons DbUtils](O/R-Mappingというよりは、O/R-Bridge)
  ttp://commons.apache.org/dbutils/
 [Amber - Lightweight Java R/O Mapping Framework]
  ttp://sourceforge.net/projects/amber-db
 [GlassFish / EJB3.0 ReferenceImplemention ]
  ttps://glassfish.dev.java.net/
 [S2Dao]
  ttp://s2dao.seasar.org/ja/

3 :
●その他関連情報・ツール
 [JoSQL]
  JavaオブジェクトをSQLで操作
  ttp://josql.sourceforge.net/
 
 [SQL Generator]
  Javaでお手軽かつ動的にSQLを生成する
  ttp://sourceforge.jp/projects/sql-generator/
 データベース開発をサポートするプラグイン (Eclipse用)
  ttp://itpro.nikkeibp.co.jp/article/COLUMN/20071015/284575/

4 :
>>1乙!!
ひとつ紹介させてね。
 [activeobjects]
  ttps://activeobjects.dev.java.net/

5 :
>>1 おつです
他にもまだまだあるようで
ttp://db2.jugem.cc/?eid=1421

6 :
Hibernateの、HQLを使用した、自然キーを持つテーブル(クラス)の
結合に関して質問したいんだけど、それってここでいいの?

7 :
すいませんあげてしまいました・・・ごめんなさい

8 :
新規の質問はあげるのが普通じゃね?
いいと思いますよ。

9 :
ありがとうございます。
それでは質問します。

EclipseとStruts2フレームワークを使用して、開発を行なっています。
Struts2に付属?していたHibernateを用いて、簡単なワークフローを実現する、
Webシステムを開発しようとしています。
申請テーブル
+ユーザID
+作成年月日
+申請種別
−承否認期限日
申請先テーブル
+ユーザID
+作成年月日
+申請種別
+申請先順番
−申請先ユーザID
−承否認状況
(テキストでの記述の方法がよく分からなかったため、+が主キー列、−が普通の列です。
 外部参照等は設定しておりません。)
最低限の構造に絞った物ですが、上記のような構造のDBテーブルがありまして、
このテーブルを用いて「現在自分に来ている申請の、"承否認期限日"一覧を表示する」画面を
作成しようと思っています。

10 :
HQLでなく、SQLで実現するのであれば、下記のようなSQLが必要であると考えています。
SELECT A.承否認期限日 
FROM 申請テーブル as A, 申請先テーブル as B
WHERE A.ユーザID = B.ユーザID
AND A.作成年月日 = B.作成年月日
AND A.申請種別 = B.申請種別
AND B.申請先ユーザID = '自分のユーザID'
これをStruts2のHibernateを用いて実現したく、現在、DBとマッピングされるクラスは、
申請テーブルを表すクラス、申請テーブルの主キーを表すクラス、
申請先テーブルを表すクラス、申請先テーブルの主キーを表すクラス
の4つがあります。
テーブルを表す2つのクラスには、主キーを表すクラスを格納するための
フィールドを作成済みです。
このクラス構成で、SQLをHQLに置き換えた処理を記述したいのですが、
結合するフィールドが別のクラスにあるため、どのように記述していいのか分かりません。
Hibernateを用いるのであれば、XML内に、結合に関する定義が必要であるような気がするのですが、
どのように記述すれば、別クラスにあるフィールドの結合の定義になるのかが分かりません。
XMLで、複合主キー(自然キー)を用いたクラス同士のフィールドの、
結合のための定義方法について、どなたかご教授願います。
また、どこか根本的に間違っている部分があれば、指摘を頂きたいです。
よろしくお願いします。

11 :
>>9-10
> Hibernateを用いるのであれば、XML内に、結合に関する定義が必要であるような気がするのですが、
正解。サンプルから調べるのがいいかな
ttp://www.hibernate.org/hib_docs/v3/reference/en/html/example-mappings.html#example-mappings-composite-key
関連のマッピングができればHQLでは関連名を指定するだけ。

12 :
公式ドキュメントのcomposite identifiers辺りを参照
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#components-compositeid
ただし、複合主キー使うDB構成にHibernateを使うのはあまりお勧めしない
Hibernateはあくまでも外部キーによる結合を前提とした挙動をするから
後々ハマるポイントが出てくる

13 :
ありがとうございます、参考に致します
英語は糞苦手ですが頑張って読みます
>>11
関連名をHQLで指定する!?その発送は無かったです
クリティカルなサンプルありがとうございます、
参考にします
>>12
本当は人工キーに変更したいのですが、
今更そんな事も言えず・・・というか、
むしろHibernateを使用したくないのが本音です
勉強だと思って頑張ります

ところで、現在、英語が苦手な私は
ttp://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/ja_JP/html/Hibernate_Reference_Guide/index.html
ここを参考に作業をしているのですが、
このページの信頼度はどの程度のものなのでしょうか?
公式と比べて遜色ない物でしょうか?

14 :
>>13
それ公式だから。

15 :
>>14
まじですか。
公式っぽいなぁとは思いつつ、確証持てなかったんですが・・・
ありがとうございます、自信を持って参考にします

16 :
>>5
これ使ったことあるん?
あるなら感想というか使い心地を聞きたいなあ

17 :
アンカーミスった
>>4です、すいません

18 :
activeobjectsってHIBERNATEとかに比べると簡単だったよ。
ただトランザクションの宣言方法が独特だった気が…

19 :
あれー?
S2JDBCはー?

20 :
なにそれ
使えんの?

21 :
>>20
今の流行。俺の中でw
Hybernate

S2Dao

iBatis

S2JDBC(今ここ)

22 :
その流れでS2JDBCにたどり着くっててところがおもろいが
4つの中でどれが一番覚え易かった?


23 :
いまはS2JDBCかなー
でもちゃんと規約作った方がよさげ。
自分で規約を作れないならS2Dao。
規約作れなくても楽がいいっていうならS2JDBC。
仕組み的にはiBatisが一番分かりやすいけど、
タグ覚えなきゃならないのとタグにクセがある部分があるのが
ちょっといやなところがある。
まあ、Seasar使えないならiBatisしかないけど。

Hybernateは無い。

24 :
S2JDBCやLINQみたいなものは良いんだけどさ〜。
でも、分かっている人達だけでやる時用っていう気はするんだよね。
スキルが色んな人達が集まっている環境で、最低限の品質を保とうとすると
結局DAOパターンに落ち着いてしまったり。
iBatisも3.0になって、interfaceベースでのConfigurationが出来るようになると
嬉しいかな?

そしてHibernateは無い。

25 :
Hybernateが無いのは同意
規約は無くても、作ってたら自然と規約っぽくなっちゃわない?
でも複数人でやるときは
やっぱS2Daoのほうがいらぬ心配しなくていいのか

26 :
Hybernateはないよな

27 :
たしかにそんなプロダクトはないな

28 :
無い理由は?
覚えること多すぎというのはわかる
あと、Hibernateな

29 :
開発や企画を押さえ込めるスーパーエンジニアががっちりドメインモデルを作って
仕切ってるような場合はhibernateはいいんだけど、そういうのはまずありえないから。

30 :
EclipseLinkは?

31 :
>>30
O/Rマッパの主力かと
EclipseとNetBeans、JDevの積極的なサポート
アプリケーションサーバーもGlassfishV3で標準になるし
Oracle製品も標準搭載してくるでしょ
なんだかんだいってもJPAはツールのサポートが一番優れてるから便利
標準APIは強いな

32 :
>>28
> あと、Hibernateな
>26はその意味。分かりにくいけどyは全角なんだぜ

33 :
S2JDBC、OpenJPA は、ともに JPA の実装のひとつという理解であってますか?
あと、ほかに JPA ができる実装として、(ググってキーワードだけ見つけたので実際に使ったことはないのですが)
を見つけました。
Hibernate + Hibernate Entity Manager
TopLink JPA
Hibernate Entity Manager を使えば、Hibernate を JPA チックに使えるってこと?

34 :
S2JDBCはJPAの実装じゃないよ

35 :
>>33
S2JDBCは違う。あれは見た目JPAに似ているが完全な独自。
>Hibernate Entity Manager を使えば、Hibernate を JPA チックに使えるってこと?
そういうこと。
Hibernateを採用した場合でも独自は出来るだけ使わずにJPAベースで開発して
どうしても必要なところのみHibernate依存を書くのが一番メンテ含めて効率が良い。
あとTopLink EssentialsがTopLinkをベースにJPA実装を作ったやつで
RI(参照実装)となっていた。これの後継がEclipseLinkになると思ってよい。
JPA2.0ではEclipseLinkがRIになる。

36 :
>>29
DB設計時にO/Rマッパーの機能・規約を意識しているかどうかは重要だけど
ドメインモデルを採用するかどうかは必須条件ではないよ

37 :
javax.persistenceのアノテーションでインデックス付けたいんですけど、
Hibernateの@Index見たいなのが無くて困ってます。
そう言う物?

38 :
>>37
Hibernate独自アノテーションはJPAにできないことのためにある

39 :
JavaPersistenceAPI(笑い)

40 :
JPAネットたかた(笑い)

41 :
(笑い)(笑)

42 :
>37
@Indexってなんのためにあるの?

43 :
禁書目録のためにある

44 :
禁書目録のためにある(笑)

45 :
>>38
そうだと思って@Index(name="xxxx")を一緒に付けても、
インデックスが作成される気配も無く・・・
persistence.xmlを使うと、Hibernateアノテーションは使えなくなるのかなと。
>>42
DBのいわゆるインデックスを作成する為に。
少なくともそう思ってます。

46 :
ORM側からDB生成するのはせいぜい最初だけだと思ってるけど、
定常的にORM側をメインに使ってる事例はどのくらいあるんだろ。
47 :あぼーん:あぼーん
あぼーん
48 :あぼーん:あぼーん
あぼーん

49 :
い……禁書目録
50 :あぼーん:あぼーん
あぼーん
51 :あぼーん:あぼーん
あぼーん

52 :
ところで、JPAのManyToOneのOne側のIdがnullなデータベースがあったらどうすればいいですか?

53 :
IDがNullだと・・?
54 :あぼーん:あぼーん
あぼーん
55 :あぼーん:あぼーん
あぼーん

56 :
>>52
で、結局面倒なのでデータベース側で結合させてむりくり処理することにした。
http://as400bks.rochester.ibm.com/html/as400/v4r5/ic2962/info/db2/rbafpmst89.htm#HDRDEJDFTV
as400って昔からデータベースが標準だったからいまでもデータが残っているのでいいんだが、
RPGのプログラムだと好き勝手に組めてidにnullなんかやりたい放題なんでそんなのどうするかはすげー困る。
あーデータベース一から作り直したいぜ。
スレ違いすまぬ
57 :あぼーん:あぼーん
あぼーん
58 :あぼーん:あぼーん
あぼーん
59 :あぼーん:あぼーん
あぼーん

60 :
なんかのアニメキャラなのか?

キモ・・・
61 :あぼーん:あぼーん
あぼーん
62 :あぼーん:あぼーん
あぼーん
63 :あぼーん:あぼーん
あぼーん

64 :
なんか荒らされるようなことあったっけ?
65 :あぼーん:あぼーん
あぼーん
66 :あぼーん:あぼーん
あぼーん
67 :あぼーん:あぼーん
あぼーん
68 :あぼーん:あぼーん
あぼーん
69 :あぼーん:あぼーん
あぼーん

70 :
すみません
Hibernate勉強中なのですが、Hibernate Reference Documentationの最初から戸惑ってます
最初の単純なアプリケーションをコピーして作っているのですが、動作しません
いきなり、slf4j関係で怒られます
エラーメッセージにあらわれたURLを参考にslf4j-simple-1.5.5.jar入れたら、とりあえず、slf4j関係は怒られなくなりました
しかし、さらにjava.lang.NoSuchFieldError: nameなるエラーメッセージが現れ動作しません
デバッガで追ったところ、発生箇所はnew Configuration()なのですが、何が悪いのかよくわかりません
現在、Configurationのソースコードを読み始めていますが、なにかアドバイスあればお願いいたします
Hibernateは3.3.1です
OSはWindowsXPSP2, jdkは6update7です
よろしくおねがいいたします

71 :
>>70
事故解決しました
ありがとうございました

72 :
事故解決ってなんだ
下請けにぶつけて賠償請求でもしたのか
73 :あぼーん:あぼーん
あぼーん
74 :あぼーん:あぼーん
あぼーん

75 :
なんかJavaって使ってるの基地外ばっかなのか?
>>43 あたりからなんか意味不明なんだけど

76 :
意味さえわかれば基地外ではないということが理解できるはずさ
77 :あぼーん:あぼーん
あぼーん
78 :あぼーん:あぼーん
あぼーん
79 :あぼーん:あぼーん
あぼーん
80 :あぼーん:あぼーん
あぼーん
81 :あぼーん:あぼーん
あぼーん

82 :
>>70
同じ問題で悩んでいます。
どう解決したのか教えて下さいませ。

83 :
どう解決したのか教えてくれるとうれしいな
>>82から>>70へのお願いなんだよ

84 :
Hibernateのバージョンを3.3.1から2.1.8に落としたらうまくいきました。
フォーーー!!
85 :あぼーん:あぼーん
あぼーん
86 :あぼーん:あぼーん
あぼーん
87 :あぼーん:あぼーん
あぼーん
88 :あぼーん:あぼーん
あぼーん

89 :
S2JDBC って Seasar と全く関係ないプロジェクトでも使えるんですか?
ちょっと質問が意味不明かもしれないですが…うまく言えないですが、
Seasar 系のものと一緒でなければ使えないのかどうか知りたいのですが。

90 :
名前からみてもらえればわかるとおり依存性あり
JPAのようにコンテナ非依存だったらよかったよね
S3の各種コンポーネントもSlim依存のようだし
SAStrutsとS2JDBCがDIコンテナ非依存だったら
SpringとかGuiceとかその他さまざまなところで使われた予感

91 :
何トンチンカンなこと言ってるんだ?

92 :
なんだS2JDBCってそうなのか。残念。

93 :
とある Java の インデックスアウトオブバウンズエクセプション
94 :あぼーん:あぼーん
あぼーん

95 :
無能力情報処理技術者 レベル0(大半はこれに当てはまる。単なるおちこぼれ。ごくまれに例外がいる。)
低能力情報処理技術者 レベル1(多くの開発者が属する。パスポートでITの国に入国できる程度の力。)
異能力情報処理技術者 レベル2(レベル1に毛が生えた程度の力で、基本的な能力のみ有する。)
強能力情報処理技術者 レベル3(能力は今の貝発射程度。資格的には高度区分扱いされ始めるレベル。)
大能力情報処理技術者 レベル4(プロジェクトにおいて戦術的価値を見出せる程の力。)
超能力情報処理技術者 レベル5(日本のIT業界でもそれほど多くない。1人で1プロジェクトと対等に渡り合える程の力。)
絶対能力情報処理技術者レベル6(日本のITの動向に影響を与えるほどのスキルを有する者だけが到達可能。)
ttp://www.ipa.go.jp/jinzai/itss/
96 :あぼーん:あぼーん
あぼーん
97 :あぼーん:あぼーん
あぼーん
98 :あぼーん:あぼーん
あぼーん

99 :
これってSeasarの人が荒らしてるの?
100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
日下部陽一著 作ってわかるCプログラミング(第6版) (533)
C++は難しすぎ 難易度:4 (419)
★★Java質問・相談スレッド160★★ (529)
最も美しいプログラミング言語は? Part6 (430)
【GPGPU】くだすれCUDAスレ part6【NVIDIA】 (279)
プログラム関係の雑誌について (223)
--log9.info------------------
【フリゲ】フリーゲームのBGM総合スレッド【同人】 (247)
嫌いなBGMを書き込むスレ (525)
聖剣伝説新作は下村様の方が良いと思う奴の数→ (505)
【ゲーム】ゼルダの伝説 3【音楽】 (795)
● RPGツクールのデフォの曲を語るスレ ● (675)
鉄拳シリーズ (609)
【デュープリ】仲野順也の音楽を語るスレ Vol.2【FFX】 (422)
浜渦正志 29スレ目 (210)
クロノトリガーVS MOTHER(マザー) (326)
コナミゲームのBGMについて語り合うスレ (348)
田中宏和総合スレ (308)
【雑音】ゲーム音楽はロックばっかり【騒音】  (345)
全曲イイ!サントラ (261)
【みんなで】ファルコム名曲ベスト100【決めよう】 (831)
植松の曲ってすぐ飽きるよな (368)
ロックマンゼロ&ゼクスの音楽 山田三法 (236)
--log55.com------------------
【反日】モーニングショー、日経平均大幅下落を喜んで放送
【肺炎】Perfumeが2月の東京ドーム公演を決行!★12
【声優】大塚明夫、声優という仕事を私は絶対おすすめしません。売れなければ「お前のせい」スターが出れば「ありゃあ俺んとこで育てた」★3
【脱税】チュート徳井が確定申告時期に合わせて活動再開へ!謹慎4ヶ月★3
【視聴率】NHK「麒麟がくる」6話13・8%前回0・6P増
【芸能】石橋貴明、高校生に“自己紹介”「おじさんね、昔人気あったんだよ」
【音楽】<新型コロナウイルス感染>熊本の20代女性、発症前に福岡でコンサートに!「行ったのは間違いないが、出演者や会場は言えない」
【サッカー】<長谷部誠>オーバーエージ枠について「五輪は若い選手の舞台。36歳の自分は13歳もオーバーしている」消極的な姿勢