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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 11:54:44 ]
前スレ:
 Java⇔RDBのMapping-Frameworkを語るThre Vol.3
 ttp://pc8.2ch.net/test/read.cgi/tech/1090653286/
過去スレ:
 「Java⇔RDBのMapping-Frameworkを語るスレ Vol.2」(落ち)
 ttp://pc5.2ch.net/test/read.cgi/tech/1086315004/
 「Java⇔RDBのMapping-Frameworkを語るスレ」(落ち)
 ttp://pc5.2ch.net/test/read.cgi/tech/1049030272/


●まずは、基礎知識と技術選択指針など
 [The Fundamentals of Mapping Objects to Relational Databases]
  (RDBに対するオブジェクトマッピングの基礎(英語))
  ttp://www.agiledata.org/essays/mappingObjects.html

 [O/R-Mappingツールの比較サイト(英語)]
  ttp://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison

 [Catalog of Patterns of Enterprise Application Architecture (PoEAA)]
  ttp://www.martinfowler.com/eaaCatalog/

あとは>>2以降


620 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:56:52 ]
UIはUIで割り切ったほうが良いんじゃないのか?

例だけど、エンティティでは電話番号というデータ1つだけど、
UIでは-区切りの入力欄にするとかあるし・・・


621 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:26:58 ]
一部分だけの検索がほしいってlimitとか条件で絞るって話のことか?
それならEAGERでいいっしょ
まぁLAZYでもその程度問題ないけど、全件取得して処理するのはおかしい

O/Rマッパというのはキャッシングも利用するからSQLが投げられるとも限らないからね
運用すればわかるがLAZYだから遅くなるとは限らない


622 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:27:52 ]
>>620
フレームワーク次第じゃない?
ハイフン区切りや複数のコンポーネントの結果が1つのフィールドになるようなら何にも問題ないし

623 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 08:28:56 ]
>>619
> ちょっとだけとか、ある範囲(20件目〜30件目など)だけ取得したいのに、
> 全件取得されちゃうんじゃないかと・・・?違うんですかね?

違うよ。LAZY LOADだとforループとかで21-30件目を
DTOなりにコピーするたびに

SELECT ... FROM ... WHERE ID=?

が発行されるだけ。なので計10回クエリーされるけど全件は取得されない。

SQLの効率をよくしたいなら、
JPQLなりHQLなりで必要な範囲だけ一回で取り出しておいて
コピーすればいい。

624 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 08:50:03 ]
なんか、話がOneToManyとManyToOneでずれてる気がする

625 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 08:56:45 ]
そもそもは
Maker m = getSingleResult("select m from Maker m");
ってやって
List<Product> products = m.getProducts();
ってやったときにproductsが1万件あったらどうするの?ってことじゃないの?

626 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 23:37:08 ]
select m top 30 from Maker

627 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:10:29 ]
>>625
そんなあほな話じゃないだろ・・・




さすがにそう思いたい

628 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 01:37:40 ]
List<Products> products =
 em.createQuery("select p from Products p where p.maker = :maker").
  setParameter("maker", m).setFirstResult(20).setMaxResults(10).getResultList();



629 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 01:40:12 ]
SQL書いたほうが早いな

630 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 01:37:22 ]
>>628
OneToManyの意味ね〜

631 名前:デフォルトの名無しさん [2007/07/27(金) 17:23:31 ]
何千行もあるようなSQL書いて悦に入ってる香具師が
まだこの世には存在しているという事実にナッカリ。

632 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:19:50 ]
昔の方がSQLの長さに理不尽な制限があったりしたような気がするが

633 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 23:39:38 ]
今だってOracleの場合 VARCHAR 4000 Byte の制限やテーブル名、カラム名の長さ制限には泣かされてるがな。

634 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 23:49:49 ]
H2はLIKEがCLOBにも使えて感動した覚えがある。
たしかOracleって無理だったよね?

635 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 23:56:39 ]
何千行もあるようなSQLを書くような輩が発生する
危険性があるので、O/Rマッパー使いなさいってのは無理がある

636 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 08:33:07 ]
何千行もあるようなSQLがORマッピングで解決できると思ってるやつは、ORマッピングの意味を間違えている。
データベースにやらせてた処理をJava側にやらせるためにあるもんじゃない。

637 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 10:07:04 ]
長いSQLが必要な処理ってのはある

O/RマッパとSQLは排他ってわけじゃないし
それぞれ利点と不利な点がある


638 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 10:54:56 ]
ワイルドカードあるのに実質的に使えないのが癌だな
ついついカラム名を2〜3文字にして
エイリアスも極力短めに(ry



639 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 14:17:05 ]
JPAでは
select count(*) from Employee e
は使えないのでつか?


640 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 14:26:19 ]
select count(e.id) from Employee e
とかじゃないかな

641 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 14:29:38 ]
どうもでつ

642 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 14:37:34 ]
select count(e) from Employee e
でもおk

643 名前:デフォルトの名無しさん mailto:sage [2007/07/28(土) 20:01:35 ]
またまたありがとでつ
そちらの方を使うことにしまつ

644 名前:デフォルトの名無しさん [2007/08/07(火) 22:08:14 ]
Java永続化APIの次期バージョン、"JSR 317"として仕様策定プロセスへ
ttp://journal.mycom.co.jp/news/2007/07/23/039/

既存バージョンからの主な変更点は以下の通り。

・組み込みオブジェクトのコレクションサポート
・組み込みオブジェクトの多段ネストをサポート
・Orderd Listのサポート
・アクセスタイプの組み合わせをサポート
・JPQL(Java Persistence Query Language)の拡張
・Criteriaの導入
・クエリとエンティティマネージャの設定ヒントの標準化
・DDL生成とJava2DBマッピングのための追加メタデータの標準化
・Bean Validation(JSR-303)のサポート

645 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:56:23 ]
ポイントは
・Orderd Listのサポート
・クエリとエンティティマネージャの設定ヒントの標準化
・Bean Validation(JSR-303)のサポート
あたりかな

気になるのはenumが使いたい場合ってのが結構あることかな

たぶんJPAで一番ほしいのはDBのデフォルト値を有効に出来るような仕様だろうな
開発、運用していて一番これが厳しかったりする

646 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 00:28:41 ]
Criteriaの導入が気になる。

Hibernateの仕様をベースにすんのかな?
あれはSQLと違って条件に応じて結合するテーブルを
動的に変化させるような使い方の場合に便利だと思う。

Hibernateではちょっと実装面がアレだったけど、
JPAだと安定しやすい仕様になってくれるんだろう。

647 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 00:42:05 ]
Criteriaが必要になるときってそんなにない

というか、ある程度のことをやろうとしようとするとどうせJPQLを組み立てることになって
Criteriaでまかなえないことも多そうだし

LAZYなどの厳密化がほしいかな
デフォだとめちゃくちゃ検索の連鎖する場合が多すぎる

ただ、鯖だとキャッシングしまくるからパフォーマンスの問題はでないんだけど
クライアントからのアクセスがおわっとる

せっかくSwingとの親和性がよくなりそうなのにC/S無視するのはどうかと
社内アプリならわりとC/Sもシェアあるぜ
まだまだ50%は超えているんじゃないかな

648 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 14:18:04 ]
>というか、ある程度のことをやろうとしようとするとどうせJPQLを組み立てることになって
>Criteriaでまかなえないことも多そうだし
具体的にはどういうケースですか?



649 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 15:49:31 ]
>647の知識はHibernate2で止まってるとみた。

650 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 10:57:08 ]
dblってかなりよさげじゃない?

651 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 09:57:59 ]
>>650
まちがえ、ddlutils

652 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 14:40:24 ]
>>649
激しく同意

653 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:57:00 ]
>>649
JPQLってINを上手く扱えるようになったのか・・・

654 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 05:22:41 ]
>JPQLってINを上手く扱えるようになったのか・・・
過去のJPQLがINを上手く扱えなかったような記述だな。
過去のJPQLって?w


655 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 21:32:58 ]
INで配列使えるの?

656 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 22:12:54 ]
653がどうして649への安価なのかが理解できない

657 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 00:34:59 ]
>>656
禿げしく同意
全くもって理解不能

658 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 00:52:11 ]
JPAもまともに触ってないやつおおすぎ




659 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 01:40:33 ]
「JPAも」って言うほど評価・実績のあるものではないんだがな。

660 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 03:23:45 ]
JPAも(Hibernateも)まともに触ってないやつおおすぎ

661 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 13:25:34 ]
仕事には必要ないでしょ。趣味ならいいけど。

662 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 12:25:58 ]
661が仕事で使ってるものは、おれには仕事に必要ない。趣味ならいいけど。
そういう話か?

663 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 14:56:37 ]
iBatisを使っています。
updateをするときは1回主キーで検索した結果のビーンを渡すが普通でしょうか?
1つのテーブルを更新する個所が複数あって、その都度、updateのバリエーションが増えてきてしまっています。
私はORMを今回はじめて使うのであまり口を出せないのですが、こういうものなのでしょうか?

664 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 15:54:47 ]
>>662
そういう話w

665 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 19:04:38 ]
>>663
普通のO/Rマッパは変更のあった箇所のみupdateを発行する
薄いラッパほどそのままなので把握がしやすいともいうが、チューニングしていくのは面倒かも

666 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 15:45:34 ]
ロストアップデートを防ぐような機能ってないですか?

667 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 22:32:58 ]
Hibernate3になって、ストアドプロシージャをサポートしたらしいけど
参考サイトとかないですかね?


668 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 00:44:57 ]
>>667
www.hibernate.org/



669 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 00:48:43 ]
>>668
英語読めない

670 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 01:39:42 ]
>>669
www.nova.ne.jp/

671 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 01:45:43 ]
>>669
それは、読んでないだけ。

672 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 00:48:19 ]
カイエンってどうよ?

673 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 00:59:53 ]
最近、聞かんな。昔はHibernateと争える勢いだったっけ。

674 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 07:00:36 ]
JPAに対応したよ

675 名前:デフォルトの名無しさん [2007/10/06(土) 18:11:51 ]
最近Ruby on Railsをすこしやってたんだけど、Railsに相当するものって
Javaで言うとどんなのがあります?

やりたいのは、Railsでやってた、↓をJavaでもやりたい。
Four Days on Rails 4日で作るToDoリスト
rails.to/pages/4daysonrails

676 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 19:05:18 ]
>>675
JRuby on Rails

677 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 00:30:39 ]
>>675
厳密にはJavaじゃないけど、Grailsとか
ttp://grails.codehaus.org/Japanese+Home

678 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 00:48:54 ]
>>675
JSF+Rowsetならすべてポトペタであつかえるオールインワン環境だぞ

問題はRowsetが主流に慣れそうになくてJSF+JPAになりそうだけど



679 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 01:43:18 ]
>>675
Chura

680 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 02:05:28 ]
>675の人気にジェラ

681 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 02:32:45 ]
詳しくないけど、676〜678 は違うだろ。>>679 だな。

682 名前:デフォルトの名無しさん [2007/10/07(日) 06:00:35 ]
>675
RIFE

683 名前:デフォルトの名無しさん [2007/10/07(日) 08:50:59 ]
>>676
JRubyインストールしてみる

>>677
Groovyインストールしてみる

>>678
ポトペタって、マウスでぐりぐりやるとあらできあがり?
わからん

>>679
>churaの基本構成は、Seasar2.4 + Teeda + KuinaDao + S2Hibernate-JPA + S2Dxo + ツール群という形になります
インストール大変そうだから様子見てみる

>>682
RIFEインストールしてみる(他と比べると、ちょっと情報量が少ない?

684 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 11:52:24 ]
>>683
churaのインストールはこれだけだよ。
s2container.seasar.org/2.4/ja/setup.html

俺も最初は面倒くさそうだと思ったんだけど、eclipseプラグイン入れれば揃うみたい。

685 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 23:49:40 ]
なんというヘタレ…
ttp://d.hatena.ne.jp/RC3/20071007/1191760180

686 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 03:45:53 ]
Railsの環境設定なんか、Netbeans6のRuby版いれればDBもWebサーバーも苦労ないのにな。

687 名前:デフォルトの名無しさん [2007/10/08(月) 04:28:59 ]
テーブルと1対1なエンティティクラスとマッピングする利点てなによ?

688 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 08:46:40 ]
>>685
こんなやつ一生無職のほうが業界のためだ



689 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 11:59:00 ]
こんなクズに対してレスしてたのか

690 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 14:31:25 ]
>>685って>>675

691 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 14:56:55 ]
一目瞭然だろ

692 名前:デフォルトの名無しさん [2007/10/08(月) 17:40:10 ]
結論
 標準になった以上、JPA以外の選択肢はありえない

693 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 19:32:17 ]
Cayenneまで対応したことで、ORマッピングフレームワークが全部JPA対応になったから、どれを選んでもJPAには対応している、ってことか?
結論にはならんな。

694 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 20:35:11 ]
Db上のフィールドがJavaのメンバ名として使用できない名称のような場合、
どうやってORmappingしているのですか?

695 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 20:41:11 ]
>>694
完全に一致させる必要ないだろ

696 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 20:48:05 ]
>>694
好きな名前つければいいと思うよ。

697 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 20:48:34 ]
>>694
プロパティとDBのフィールド名は一致させる必要はないぞ

698 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 21:35:58 ]
>>695-697
POJO内のメンバはDB上はこのフィールド、
のようなことはマッピングファイル?か何かに書いておけば
Dbアクセスの時は意識せずに使える、
ORマッピングのツールはどれもそんなモンなんですか?

逆に、それはできないぞ、というモノもあるのでしょうか。



699 名前:デフォルトの名無しさん [2007/10/09(火) 01:09:02 ]
>>698
EJB3.0だとこんな感じになるはず。

# ただ、なるべく一致させておいた方が不幸なことが起きないかも・・・

@Entity(name="ITEM")
public class Item implements Serializable{
private int id = 0;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="RENBAN",nullable=false)
public int getId(){ return id;}

public void setId(int id){ this.id=id;}

private String title = null;

@Column(name="SHOSEKI_MEI",nullable=false)
public String getTitle(){ return title;}

public void setTitle(String title){ this.title=title;}

700 名前:694 mailto:sage [2007/10/09(火) 01:21:50 ]
試しにCayenneでやってみますた。
作成されたBeanを見ると、
public static final String フィールド名_PROPERTY = "メンバ名";
という定数があって、これを使うようですね。
外部ファイルかアノテーションでやるのかと思ってましたが、
他のフレームワークでもこんなカンジなんでしょうか。

>>699
なるべく一致させたいのはやまやまですが、
ERを変えられるような立場ではないのです。orz

EJB3.0だとアノテーションで指定するのですね。
参考になります、ありがとうございますた。

701 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 13:04:01 ]
JPAはEJB3から独立してSEで使えるから便利だよ
NetBeansだとテーブルから全部自動で作られるし

702 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:24:11 ]
>>701
NetBeans以外では自動で作ってくれるツールをしらない?

703 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 21:34:41 ]
プラグインを用意することなくデフォで使えるってのが大きいだけだろ

704 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:27:45 ]
>>702
知ってる

705 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:31:27 ]
>>701
きしだタソ乙

706 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 06:45:53 ]
>>702
WTP2.0

707 名前:デフォルトの名無しさん [2007/10/12(金) 22:52:01 ]
結論:DAOでOK マッピングイラネ

708 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 23:05:37 ]
DAOでOKって、マッピング使っても使わなくてもDAO使うだろ。



709 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 03:12:15 ]
>>707
ありえないほどバカだな

710 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 08:51:12 ]
DAO内で自分でSQL発行じゃね?

711 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 10:59:52 ]
>>710
その場合でも、手動マッピングはするわけだが

712 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 11:32:35 ]
わかった!>>707はマッピングせずに

M a p を そ の ま ま 使 う ん だ よ !

713 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 13:24:55 ]
ものによってはMapそのままでも悪くないと思うけどな
キー値の取得がプロパティの取得につながるし

ただ、HashMapとかそのままつかうのだけは禁止
キー値が存在しない場合Exceptionをかえすような実装ならOK

714 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 17:00:59 ]
まーた、Map厨発生か。
が、キー値なしで例外は納得した。

715 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 15:09:20 ]
実は Microfost Data Access Objects のことなのかも知れん。

716 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 12:47:53 ]
ResultSetだってRowSetだってmapベースだろ
DelphiだってBCBだってスクリプト系だって

717 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 14:05:52 ]
こいつは何をいっているんだ?

718 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 14:19:27 ]
はじめから道具ありきで、どっかで道に迷っちゃうんだろ
若い奴らは大変なんだよきっと



719 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 14:28:44 ]
Map系ってのはMapインターフェースを実装したものではなくて
名前で値を引っ張るものってことだろ。
何もおかしいことはない。

720 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 14:42:06 ]
どうしてわざわざオブジェクトに情報を詰めなおすのか
知っているか?






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

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

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