上記の広告は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だって書いてるけど…。嘘ぉーん。えー…結局よく調べなかったおいらが悪いってオチですか?…み…認めん…こんなん仕様にしやがって…ほとんどバグじゃないか…。た…例え…お天道様が認めても…おいらは…おいらは…自分の非だけは認めんぞー!!くわぁー!(泣)

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

スポンサーサイト

CSSには、ブラウザのバグを利用したCSSハックと呼ばれる手法が存在する。このCSSハックを使えば、使った部分がブラウザによって認識されたりされなくなったりする。つまり、この現象を利用してCSS対応度の違うそれぞれのブラウザをクライアント側で切り分けれる…そんなトリッキーなテクニックなわけ…。(バグを利用するのではなく、未対応のセレクタで切り分ける場合もある。)

例えば、html>/**/bodyってやると本来なら/**/はコメントなので読み飛ばして、html>bodyとなり、"html要素直下のbody要素の…という意味になる。が、IE7ではどういうわけかこれが認識されへん…。この場合、バグのジャンルは文法解析のミスなわけだけどCSSハック周りには同じような文法解析のミスと思われるものが結構ある。しかも、ほとんどのブラウザで…。(Gecko系は優秀だけど)

で、ここからがおいらの疑問なんだけど、何故こんなバグを作るわけ?いや、決しておいらならこんなヘボいバグは出さないぜ~、へへへ~って分けではない…ぶっちゃけ、おいら無勢が実装するとハックだらけになる自身がある…。つまり自分を棚に上げて思うのは、ブラウザを実装出来るようなチームがこんなバグを出すもんだろうか?という話。

と言うのも、コンピュータで使われる言語の文法解析ってのは、かなり前から手法が確立されている。中でもCSS2.1等はLALRと呼ばれる種類の言語で、まぁ解析の難しい類には入るものの定番中の定番、料理で言うとコロッケみたいなものだ…。そんなコロッケみたいなものをプロの料理人がミスるだろうか?しかも、ブラウザ内で似たように難しさの言語であるJavaScriptなんかの解析はほぼ完璧に実装されている。こちらは言うなればグラタンみたいなもんだ。そう、プロの料理人がグラタンは作れてコロッケは駄目って変な話があるかい?って事が言いたい…え…?いちいち例えが面倒臭いって…?Sorry...

テストに時間をかけてない…とか幾つか適当な理由は思いつくんだけど、、、どうにも分からない。…分からないので人のバグの原因を考る前に自分のバグを直します…って当たり前か…(爆)。

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

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