[天気:晴れ]
#2
Hibernate で enum をマッピングする
VARCHAR にマッピングするサンプル
SMALLINTにマッピングするサンプル
EnumUserType の改良版
改良版の方にある GenericUserType 等は汎用性もあがってて良さそう。
但し初期の固定でVARCHARにマッピングするEnumUserTypeのほうが XDoclet 開発してる場合は良いケースもあるな。
GenericEnumUserType の方は typedef しないといけない点が微妙だ。
XDoclet で hbm.xml 作るようにしてる場合、enum 使う Bean を作るたびに typedef 用のマージファイル作らないといけないから面倒だ。
その点初期のシンプルな EnumUserType の場合は XDoclet の type を UserType のFQDNで書くので長くなるけど、Javadoc 内の指定だけで使えるから使いやすいかもしれない。
どちらも Enum をプロパティに使いたいって要望は満たしてくれるのでケースバイケースで使い分けって感じかな。
[天気:晴れ]
おぉ、こんな方法があるのか。
VMWareTools が使えないとGUI使うときにちょっと痛いけど、Linux動かすだけならアリだなぁ。
[天気:晴れ]
#1
Hibernate のトランザクション管理のメモ
・lazyローディングを有効にしてOpenSessionInViewパターンを使うか
・lazyローディングを無効にしてfindしたときに関連エンティティも全部ロードしちゃうか
・lazyローディングを有効にして、必要な関連エンティティも初期化する find メソッドをそれぞれ作って使い分けるか
この3通りの道しか無いようだ。
ちなみに必要なエンティティをトランザクションの中でロードするには例えばこんな感じにやる
public User findXX() {
User user = getHibernateTemplate().find("〜");
user.getGroup(); //DBからgroupを読み込んでおく
return user;
}
この場合だと group が初期化された User オブジェクトを取得できる。
もしトランザクション(findXX)の中で user.getGroup() をしていない場合は、findXX().getGroup() で例外が発生してしまうことになる。理由はトランザクションを外れているから group が取得できないということらしい(自信なし)。
というわけで最初にあげた3つの方法のどれかを取ることになる。
#2
Redirect after post とか Redirect after submit パターン
method="post" なフォームを submit した後のページを表示しているときに、
F5 を押されるともう一回 submit されてしまう問題を避ける手法。
Java の場合、以下のように表示用URLにリダイレクトしてやればよい
response.setStatus(response.SC_SEE_OTHER);
response.setHeader("Location",url);
SC_SEE_OTHER は 303 (See Other) で、GET を使って移動するというような感じで使う。
直前のリクエストとは切り離されるので F5 を押しても再度 submit されることはなくなる。
ちなみに、普通に response.sendRedirect(url); をした場合は SC_FOUND (302) が返されて、この場合は F5 で再度 submit してしまう。
[天気:曇り]
ここ数日仕事頑張りすぎて疲れがたまってる様子。
週末はゆっくり過ごすか。
[天気:晴れ]
#1
モニタが眩しい日々
毎日18時を過ぎると突然モニタがまぶしく感じてライトネスを45%に落とす。
翌朝10時ごろになるとモニタが暗くて醜く感じてブライトネスを55%に上げる。
これを毎日やっている。
そろそろ自動でやってほしいなぁと思う今日この頃。
[天気:晴れ]
#1
CSSとかXMLで使える文字メモ
CSSのクラス名で使える文字は [a-zA-Z][a-zA-Z0-9-]* これだけなのか?
アンダーライン使えないの?→よく見たら改定されて今は使ってよいらしい。
というわけで [a-zA-Z][a-zA-Z0-9_-]* こんな感じかな。
XML のタグや属性名に使える文字は結構ゆるいんだな。
コロンとか何回も使っていいのか、自分アプリで使う属性で foo:bar="" の他に foo:bar:hoge="" とかいう感じに属性に階層的な名前空間付けたかったんだが、OKなのか。foo:bar_hoge や foo:bar.hoge や foo:bar-hoge もOKなんだな。
後はその文字列を同解釈するかとこあXMLパーサー次第かな
それ考えると日本語とかは使わない方が無難だなw
ハイフンとかアンダーバーとかコロンを複数とかは大抵大丈夫な予想。