RuntimeExceptionにthrows節はいらないの巻

ずいぶん基本的なことを最近知った。

RuntimeException は、Java 仮想マシンの通常の処理でスローすることができる各種の例外のスーパークラスです。
メソッドの実行中にスローされるがキャッチされない RuntimeException のサブクラスについては、メソッドの throws 節でそれらを宣言する必要はありません。

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/RuntimeException.html

ちなみにSpring Frameworkは、Exceptionをthrowしてもrollbackしてくれない。(なかったんだけど、ホントかどうかは?)
RuntimeExceptionをthrowすれば、rollbackしてくれることが確認できた。


気になって調べてみたところ、Hibernateの例外クラスは全てRuntimeExceptionのサブクラスであった。SQLException(Exceptionのサブクラス)をcatchしたら、Hibernateの例外クラスにラップしていたような気がする。(数週間前のことなので、明確に覚えていない・・・orz.)