public class HibernateExceptionTranslator extends ObjectSE implements PersistenceExceptionTranslator
HibernateException
インスタンスを Spring の DataAccessException
階層に変換できる PersistenceExceptionTranslator
。Spring 4.3.2 および Hibernate 5.2 以降、標準の JPA PersistenceException
EE インスタンスも変換します。LocalSessionFactoryBean
によって拡張されるため、LocalSessionFactoryBean
に加えてこのトランスレータを宣言する必要はありません。
@Configuration
クラスでコンテナーを構成する場合、この型の @Bean
を手動で登録する必要があります。
コンストラクターと説明 |
---|
HibernateExceptionTranslator() |
修飾子と型 | メソッドと説明 |
---|---|
protected DataAccessException | convertHibernateAccessException(HibernateException ex) 指定された HibernateException を org.springframework.dao 階層からの適切な例外に変換します。 |
void | setJdbcExceptionTranslator(SQLExceptionTranslator jdbcExceptionTranslator) Hibernate 例外変換の目的で JDBC 例外トランスレーターを設定します。 |
DataAccessException | translateExceptionIfPossible(RuntimeExceptionSE ex) 可能であれば、永続フレームワークによってスローされた特定のランタイム例外を、Spring の汎用 DataAccessException 階層からの対応する例外に変換します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setJdbcExceptionTranslator(SQLExceptionTranslator jdbcExceptionTranslator)
Hibernate JDBCException
の検出された SQLException
SE 根本原因に適用され、Hibernate 自身の SQLException
変換をオーバーライドします(特定のターゲットデータベースの Hibernate ダイアレクトに基づきます)。
@Nullable public DataAccessException translateExceptionIfPossible(RuntimeExceptionSE ex)
PersistenceExceptionTranslator
DataAccessException
階層からの対応する例外に変換します。このトランスレータが理解できない例外は変換しないでください。たとえば、別の永続化フレームワークが原因である場合や、ユーザーコードが原因である場合や、永続性に関係のない場合などです。
特に重要なのは、制約違反などで、DataIntegrityViolationException に正しく変換することです。実装では、Spring JDBC の高度な例外変換を使用して、根本的な原因として SQLException のイベントに関する詳細情報を提供できます。
PersistenceExceptionTranslator
の translateExceptionIfPossible
ex
- 変換する RuntimeExceptionnull
。この場合、実際の永続性の問題ではなく、ユーザーコードが原因である可能性があります。)DataIntegrityViolationException
, SQLExceptionTranslator
protected DataAccessException convertHibernateAccessException(HibernateException ex)
org.springframework.dao
階層からの適切な例外に変換します。指定された SQLExceptionTranslator を Hibernate JDBCException に自動的に適用します。それ以外の場合は、Hibernate のデフォルトの変換に依存します。
ex
- 発生した HibernateExceptionSessionFactoryUtils.convertHibernateAccessException(org.hibernate.HibernateException)