UUID


java2 SE5.0からはjava.util.UUID*1が追加された。


理論上世界で唯一のものとなるらしいので*2、永続化するときのIDとするには適切なのかもしれない。


現状うちのアプリでは主キーを持たないテーブルではSEQをまわしてIDとして、レコードはそのうち廃棄することにしている。
ただ、SEQが1週したらどうなるの?という問題はあって(1週するには10数年かかる見込みではあるが)、実装者としてはいささか落ち着かないものであることも確かだ。


そこでUUIDを使用すれば、そのような心配がなくなるわけだ。


このUUIDはhibernateのgeneratorクラスとしても指定できる*3
org.hibernate.id.UUIDHexGeneratorクラスがその生成ロジックだ。


SEQを自作するよりかは使いやすいかもしれないけど、気になるのはパフォーマンスかなぁ。
あとはトラブった時に、レコードがどの順番で作成されたのかがわかるかどうかというところか。


参考
唯一のキー(ID)を作成する方法について*4
Hibernateで理解するO/Rマッピング(5)*5