Spring+Hibernate連携時の主なExceptionまとめ
HibernateをSpringで動かすと、Hibernateで発生したExceptionをSpringが変換して投げてくれる。
- PK検索でデータが存在しなかった場合
- org.hibernate.ObjectNotFoundException
- 登録、更新時に一意制約違反がおきた場合
- org.hibernate.exception.ConstraintViolationException
- 更新、削除時に楽観的ロック例外が発生した場合、または対象データが存在しなかった場合
- org.hibernate.StaleObjectStateException
上記のExceptionが以下のExceptionに変換される。
Spring
- PK検索でデータが存在しなかった場合
- org.springframework.orm.hibernate3.HibernateObjectRetrievalFailureException
- 登録、更新時に一意制約違反がおきた場合
- org.springframework.dao.DataIntegrityViolationException
- 更新、削除時に楽観的ロック例外が発生した場合、または対象データが存在しなかった場合
- org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException
以下のように親クラスで捕らえれば、Hibernate以外の各種ORマッパーの例外も統一して扱うことができる。
SpringでHibernateだけに依存しないで捕らえる型
- PK検索でデータが存在しなかった場合
- org.springframework.dao.DataRetrievalFailureException
- 登録、更新時に一意制約違反がおきた場合
- org.springframework.dao.DataIntegrityViolationException
- 更新、削除時に楽観的ロック例外が発生した場合、または対象データが存在しなかった場合
- org.springframework.dao.OptimisticLockingFailureException
上記すべてRuntimeExceptionです。
try〜catch、throwsが必要なExceptionは、近頃流行らないのでしょうか?
C#にもRuntimeExceptionしかないみたいだし。