Top / Hibernate / 楽観的ロックを実装する

Hibernateは業務用アプリとかで出てくる、楽観的ロック機構を標準で備えています。それを試してみました。複数のトランザクションである同じrowを検索してきて、それをそれぞれのトランザクションでupdateしてみようと思います。

対象テーブルの情報

MESSAGES.png

対象のテーブルMESSAGESは以下の通り:

mysql> describe test.MESSAGES;
+-----------------+------------------+------+-----+---------+----------------+
| Field           | Type             | Null | Key | Default | Extra          |
+-----------------+------------------+------+-----+---------+----------------+
| MESSAGE_ID      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| NEXT_MESSAGE_ID | int(10) unsigned | YES  | MUL | NULL    |                |
| MESSAGE_TEXT    | varchar(255)     | NO   |     | NULL    |                |
| VERSION         | int(10) unsigned | NO   |     | 0       |                |
+-----------------+------------------+------+-----+---------+----------------+

このテーブルを作成するために実行するDDLは以下の通り:

CREATE TABLE `MESSAGES` (
  `MESSAGE_ID` int(10) unsigned NOT NULL auto_increment,
  `NEXT_MESSAGE_ID` int(10) unsigned default NULL,
  `MESSAGE_TEXT` varchar(255) character set ujis NOT NULL default '',
  `VERSION` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`MESSAGE_ID`),
  KEY `MESSAGES_FKIndex1` (`NEXT_MESSAGE_ID`),
  CONSTRAINT `MESSAGES_ibfk_1` FOREIGN KEY (`NEXT_MESSAGE_ID`) REFERENCES `MESSAGES` (`MESSAGE_ID`) ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;

この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Hibernate / 楽観的ロックを実装する

現在のアクセス:38991


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS