doma-spring-bootのSQL例外変換
doma-spring-bootを利用すると、Doma2の例外クラス(JdbcException
)をSpring Transactionの例外クラス(DataAccessException
)に変換してくれます。例外変換の仕様が明文化されていないようなので調べてみました。どこかにまとめてあったら教えてください。
前提
- doma-spring-boot-1.1
例外変換の仕様
契機 | Doma2の例外クラス → Spring Transactionの例外クラス |
---|---|
楽観的排他制御エラー | OptimisticLockException → OptimisticLockingFailureException |
一意制約違反 | UniqueConstraintException → DuplicateKeyException |
1件であることを期待する検索系SQLの結果が2件以上である場合 | NonUniqueResultException → IncorrectResultSizeDataAccessException |
1列であることを期待する検索系SQLの結果が1列でない場合 | NonSingleColumnException → IncorrectResultSizeDataAccessException |
1件以上存在することを期待する検索系SQLの結果が0件である場合 | NoResultException → EmptyResultDataAccessException |
結果セットに未知のカラムが存在する場合 | UnknownColumnException → TypeMismatchDataAccessException |
結果セットのカラムにマッピングされないプロパティが存在する場合 | ResultMappingException → TypeMismatchDataAccessException |
その他のSQL例外 | JdbcException → SQLExceptionTranslator により変換される |
その他の例外 | JdbcException → UncategorizedDataAccessException |
なお、例外変換はapplication.ymlで以下を設定すると無効化できます。
# Whether convert JdbcException into DataAccessException. doma.exception-translation-enabled: false
共通例外処理を実装する場合などに役に立てば幸いです。
参考資料
2016年の振り返り
2016年もお世話になりました。
概況
振り返り
- 仕事
- Spring CloudとかSwaggerとかAWSとか触ってた。
- JIRA, Confluence, Mattermost, ownCloud, GitBucket, Jenkins, Artifactory, SonarQubeとかをDocker Composeベースで開発基盤に導入してた。
- 上期は暇で、下期は炎上してた。
- 開発
- 上期はGradle SSH Pluginの改善に注力できた。
- 下期はGradle Swagger Generator PluginやDevOps Composeに注力してた。
- GitBucketにJenkinsとの相互運用性を改善するPull Requestを送ったりした。
- プライベート
- 3ヶ月弱の育休を取得した。視野が広がった。
- 家族と過ごす時間を大切にできた。(12月以外)
- 環境の変化に対応しながら家計を管理できた。
計画
エンジニア35歳定年を迎えます。家族と過ごす時間を大切にしつつ、専門性の高い仕事をしていけるように、働く環境を改善していきたいと思います。
2017年もよろしくお願いいたします。
Jenkinsで自分でビルドしたGitコマンドを使う
Jenkins Agentで自分でビルドしたGitコマンドを使う方法を説明します。新しいバージョンのGitを使いたい場合に有用です。
方針
JenkinsにはGitやAntなどの外部ツールを管理する機能があります。 外部ツールが必要になった場合に自動的にインストールスクリプトを実行することもできます。
設定方法
JenkinsのGlobal Tool ConfigurationにあるGit installationで、以下を設定します。
- Name:適当な名前(例えば compiled-git)
- 自動インストール:チェック
- コマンド実行
- ラベル:自動インストールを行うノードを限定する場合はラベルを指定します。
- ツールホーム:
bin/git
コマンドは以下を指定します。
GIT_VERSION=2.11.0 GIT_HOME="`pwd`" echo "Using $GIT_HOME/bin/git" if [ ! -x bin/git ]; then curl -LO "https://github.com/git/git/archive/v${GIT_VERSION}.tar.gz" tar -zxf "v${GIT_VERSION}.tar.gz" cd "git-${GIT_VERSION}" make configure ./configure --prefix="$GIT_HOME" make install fi
これで設定は完了です。
実行
Jenkins Slaveにあらかじめ開発用パッケージを入れておく必要があります。RHEL系の場合は以下になります。
yum -y groupinstall 'Development Tools' yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
Gitを利用するジョブを実行してみましょう。初回のみGitのダウンロードとコンパイルが実行されるはずです。
CentOSに標準で入っているGitが古すぎてJenkinsのgit cloneが失敗する場合に使いました。Git以外にも応用できるので、いろんな場面で役に立つと思います!
改訂新版Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
- 作者: 佐藤聖規,和田貴久,河村雅人,米沢弘樹,山岸啓,川口耕介
- 出版社/メーカー: 技術評論社
- 発売日: 2015/06/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る