本製品に含まれるSpring Frameworkでは、Symfowareのエラーコードに対応した例外クラスとのマッピング情報が定義されています。
定義されているマッピング情報を元にSpring Frameworkが例外を返却するため、ユーザが作成するアプリケーションはSymfowareのエラーコードを意識する必要がありません。
以下に、Spring Frameworkがマッピング情報を元に返却する例外クラスについて説明します。
No. | 例外クラス | 説明 |
---|---|---|
1 | DataAccessException | 以降で説明する例外クラスのスーパークラスです。スーパークラスのため、本例外はスローされません。 |
2 | BadSqlGrammarException | SQL文法に誤りがある場合にスローされます。 |
3 | InvalidResultSetAccessException | データベースの結果セットが無効な形式である場合にスローされます。 |
4 | DataAccessResourceFailureException | 接続以外の資源へのアクセスへ失敗した場合にスローされます。 |
5 | PermissionDeniedDataAccessException | アクセス権限がない場合にスローされます。 |
6 | DataIntegrityViolationException | 挿入または、更新の結果、データの一貫性が保てなくなった場合にスローされます。 |
7 | CannotAcquireLockException | ロックに失敗した場合にスローされます。 |
8 | DeadlockLoserDataAccessException | デッドロックが発生した場合にスローされます。 |
9 | CannotSerializeTransactionException | トランザクション分離レベルがSERIALIZABLEでかつ、他のトランザクションの完了待ちになったトランザクションが完了しなかった場合にスローされます。 |
10 | UncategorizedSQLException | 発生したエラーコードがNo.2~9の例外クラスに該当しない場合にスローされます。 |
本製品で提供するSpring FrameworkにおいてのSymfowareのエラーコードとSpring Frameworkが提供する例外クラスとの関連付けを下記に示します。
SQLCODE値 | 対応クラス |
---|---|
7 | DataAccessResourceFailureException |
8 | DataAccessResourceFailureException |
9 | DataAccessResourceFailureException |
22 | PermissionDeniedDataAccessException |
103 | DataAccessResourceFailureException |
104 | BadSqlGrammarException |
1039 | CannotSerializeTransactionException |
1041 | InvalidResultSetAccessException |
1044 | BadSqlGrammarException |
1058 | InvalidResultSetAccessException |
1059 | InvalidResultSetAccessException |
1060 | DataIntegrityViolationException |
1085 | InvalidResultSetAccessException |
1086 | InvalidResultSetAccessException |
1088 | InvalidResultSetAccessException |
2001 | CannotSerializeTransactionException |
SQLSTATE値 | 対応クラス |
---|---|
22000 | BadSqlGrammarException |
22001 | InvalidResultSetAccessException |
2A000 | BadSqlGrammarException |
37000 | BadSqlGrammarException |
3F000 | BadSqlGrammarException |
40000 | CannotSerializeTransactionException |
42000 | BadSqlGrammarException |
HZ220 | PermissionDeniedDataAccessException |
HZ370 | BadSqlGrammarException |
SQLSTATE値 | 対応クラス |
---|---|
07xxx | BadSqlGrammarException |
21xxx | BadSqlGrammarException |
2Axxx | BadSqlGrammarException |
37xxx | BadSqlGrammarException |
42xxx | BadSqlGrammarException |
65xxx | BadSqlGrammarException |
50xxx | BadSqlGrammarException |
01xxx | DataIntegrityViolationException |
22xxx | DataIntegrityViolationException |
23xxx | DataIntegrityViolationException |
27xxx | DataIntegrityViolationException |
44xxx | DataIntegrityViolationException |
08xxx | DataAccessResourceFailureException |
53xxx | DataAccessResourceFailureException |
54xxx | DataAccessResourceFailureException |
40xxx | ConcurrencyFailureException |
61xxx | ConcurrencyFailureException |
その他 | UncategorizedSQLException |
EmployeeDaoImplを元にBadSqlGrammarException/UncategorizedSQLException/DataAccessExceptionクラスを使用した例外処理の例を以下に示します。
package test; ・・・ import org.springframework.dao.DataAccessException; import org.springframework.jdbc.BadSqlGrammarException; import org.springframework.jdbc.UncategorizedSQLException; ・・・ public class EmployeeDaoImpl implements EmployeeDao{ ・・・ public boolean execDaoInsert(String Employee){ boolean ret = true; try{ // データベースアクセス処理 } catch(BadSqlGrammarException bage){ // SQL文法に誤りエラー時の任意の処理 } catch(UncategorizedSQLException use){ // SQL文法に誤りエラー以外の任意の処理 } catch(DataAccessException dae){ // 上記エラー以外の任意の処理 } return ret; } ・・・ } |
■Spring Frameworkが返却する例外クラスを利用することのメリット
Spring Frameworkが返却する例外クラスを利用する場合、以下のメリットがあります。
Spring Frameworkがマッピング情報を元にSymfowareのエラーコードに対応したSpring Frameworkが持つ例外クラスをスローするため、Symfowareのエラーコードを意識して例外処理を作成する必要がありません。
業務データベースを他のデータベースに変更する場合、Spring Frameworkが持つ例外クラスをキャッチして例外処理を作成しているため、ソースコードを変更せずに移行することができます。