2007-04-01から1ヶ月間の記事一覧

JSONPって?

オリジンサーバ*1ポリシー JavaScriptは、ネットワーク経由で転送できる実行可能なデータであり、プレーンなテキストファイルなどと比べると潜在的な危険性がある。 その為、ブラウザのベンダは、JavaScriptをサンドボックス内で実行し、ローカルファイルへ…

更新のメモ(2)

Hibernateの実装は、デフォルトでは全ての列に対して更新を行なってしまう。 サンプル package sample; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import java…

更新のメモ(2)

更新のメモ

共有ロックと排他ロック

DB H2

H2では、共有ロック (shared locks) と排他ロック(exclusive locks)の2種類のロックが存在する。共有ロックは、SELECT で取得される。 排他ロックは、SELECT 〜 FOR UPDATE 、INSERT、UPDATE、DELETE などで取得される。 共有ロックが取得されている場合 SQL…

Lockのメモ

JPAでは、EntityManager.lock(Object, LockModeType) でLockを取得できるらしい。 LockModeTypeは、WRITEとREADが用意されている。とりあえず、次のようなコードでロックの動作を確認をしてみる。 package sample; import javax.persistence.EntityManager; …

ロックタイムアウト

DB H2

JPAでロックの確認をしようとしたが、H2は1秒でロックタイムアウトするようデフォルト値が設定されている為、確認できない。 次のコマンドを実行し、5秒待つように変更した。 SET DEFAULT_LOCK_TIMEOUT 5000; DEFAULT_LOCK_TIMEOUT以外にLOCK_TIMEOUTもある…

更新のメモ

明示的に更新メソッド(EntityManager.merge())を呼び出さない更新と、更新メソッド(EntityManager.merge())を呼び出す更新の動作確認。 EntytyManager.merge() を使用しない更新(関連テーブル) ← いや削除・・・ package sample; import java.util.Arr…

Cascadeのメモ

CascadeType.PERSIST, CascadeType.REMOVEの確認 MovieのCascadeTypeを次のように変更し、動作確認をしてみた。 cascade=CascadeType.ALL, ↓ cascade={CascadeType.PERSIST, CascadeType.MERGE}, CascadeExSample.class package sample; import javax.persis…

EntityManager.remove()のメモ

削除の動作を確認しようと次のようなコードを実行したところ、ObjectDeletedExceptionという例外がthrowされた。Remove.class package sample; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persi…

ManyToManyのメモ

テーブル create table movie ( id identity, name varchar(50), primary key (id) ); create table actor ( id identity, name varchar(50), primary key (id) ); create table movie_actor ( movie_id bigint, actor_id bigint, primary key (movie_id, ac…