2008年6月19日木曜日

Hibernateメモ

HibernateのHQLでDate(日付)をWhere句に入れて検索する場合
setDate()を使って値をバインドすると
バインドしたDate型の時刻(HH:MI:SS)が00:00:00にリセットされてしまっている様子(推測)

setTime()を使ってバインドするとリセットされずちゃんと比較

例えば
--------------------
hoge | 2008/6/19 10:00:00
--------------------
というデータをSelectする時に
from hoge where date <= :fromdate

Date型の2008/6/19 11:00:00という値を
setDate()でバインドすると、時刻がリセットされ
2008/6/19 00:00:00
で比較になりSelectされない

2008年4月8日火曜日

Google App Engineレビュー 1 (Hello, world)

Google App Engineのプレビュー版が公開され、先着1万名のテスターへ申し込めたので
試用してみたレビュー

OS:Windows Vista SP1

1.Python2.5.2のWindows版インスートーラーをダウンロードしてインストール
2.Google App Engine SDKをダウンロード、インストール
3.後はDocsを参考に"Hello, world"

Python Source作成
helloworld.py
------------------------------
print 'Content-Type: text/plain'
print ''
print 'Hello, world!'
------------------------------
同一ディレクトリに
YAMLフォーマットでアプリケーションの構成を定義した
設定ファイルを作る
---------------------------------------
application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
script: helloworld.py
---------------------------------------

SDKをインストールしたディレクトリにある
dev_appserver.pyに作成したアプリのディレクトリを引数で指定して実行すると
dev_appserver.py c:\googleapp\helloworld

ローカルWebサーバが起動され
http://localhost:8080からローカルで検証できる
(初回実行時は
Allow dev_appserver to check for updates on startup? (Y/n)
と、SDKのアップデートをチェックするかを選択する(Y(チェックする)を選択した))

http://localhost:8080をブラウザで開くと無事
Hello, world!
が表示された


Google App EngineにはWSGI互換の
Python用ライブリが用意されている
それを使ったコードに置き換える。。。

疲れたので後で

2008年3月6日木曜日

Tomcat設定

Tomcat起動後の初回アクセス時にクラスをロードしているのか
やたらと時間がかかる.....

TomcatのJavaオプションのヒープサイズで
-Xmx654M
を指定していたが
これをTomcatオプションの
InitialMemoryPool=256M
MaximunMemoryPool=654M
に変更したら、初回でもサクサク動くようになった

2008年3月5日水曜日

特定のイベントログをトリガーにメール送信

メモ
windowsサーバーのイベントで
特定のイベントが発生した場合のメール送信について調べてみたら
ここにどんぴしゃの情報があった
[-*煙猴*-]: 特定のイベントログをトリガーにメール送信

2008年1月15日火曜日

Hibernateのキャッシュ

Hibernateにはキャッシュ機能がありload()、get()を行うと自動的にインスタンスがキャッシュされる。
そのため、インスタンスのdelete()後にget()を行うとdelete()したはずのデータがキャッシュから取得されてしまう。
PrimaryKeyからget()してデータの有無を判定するコードでこの問題が判明。

キャッシュを回避するためにget()ではなくcountのHQLで有無を判定するように変更
(インスタンスを取得するわけではないので、これならキャッシュされない!!)。

データの有無をの判定だけなので、これで問題ない