上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

役に立ったらぽちっとよろしく。 人気ブログランキングへ

なんだこれは! [2008/05/10 (土)]

タイトル通りなんですが、またまたToplinkです…。FetchType.LAZYとラージオブジェクトの使い方に関して…。

データベース上のLOB形(BLOBやらCLOB)を格納したレコードにそれらのカラムを含まないクエリを投げておき、実際に必要になった時だけそれらのカラムを取得する。これはたぶんそんなレアな事ではないはず。例えば、個人のプロフィールと一緒に顔写真もDB上に格納し、普通の業務ではプロフィールのカラムだけを処理し、顔写真のいる書類の時だけそのカラムも処理する。こうすれば普通の業務で100人分のデータが必要って時に、何十キロバイトもある顔写真×100人分の巨大なデータを受け取らなくて済む。この場合、顔写真のカラムに対応するプロパティに@Basic(fetch=FetchType.LAZY)@Lobってな感じになる。

が、しか~し、、、glassfishのログを追跡していると、何やら怪しげな内容が…

oracle.toplink.essentials.session.file:/C:/Sun/SDK/domains/domain1/applications/j2ee-apps/ear/ejb_jar/-ejb.ejb_or_metadata|_ThreadID=10;_ThreadName=main;_RequestID=8baaf9b2-fd82-4307-bbb9-c0dfc6b34821;|Ignoring LAZY fetch type on element [private byte[] entity.PictureItemBean.image] within entity class [class entity.PictureItemBean]. All basic mappings default to use EAGER fetching.|#]

な、何これ?嘘!勝手にEAGERにされちゃった…。いや、確かにJPAの実装には、LAZYはあくまでヒントだから別にそうしなくてもいいよってあるけど…。ここ一番美味しい所では?でも、よく調べるとToplinkのサイトでも、確かに@Basicマッピングは問答無用でEAGERだって書いてるけど…。嘘ぉーん。えー…結局よく調べなかったおいらが悪いってオチですか?…み…認めん…こんなん仕様にしやがって…ほとんどバグじゃないか…。た…例え…お天道様が認めても…おいらは…おいらは…自分の非だけは認めんぞー!!くわぁー!(泣)

スポンサーサイト

役に立ったらぽちっとよろしく。 人気ブログランキングへ

コメント
この記事へのコメント
すっごい技術ブログじゃないですか!!

感動しました。
ちょくちょく来ます(@Å@)!!!
2008/05/22(木) 02:43:23
コメントを投稿する

トラックバック
この記事のトラックバックURL
この記事へのトラックバック
Copyright © ふらふら技術者の日記 All Rights Reserved.
Powered by FC2 Blog
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。