skillup

技術ブログ

Database Java

DBUtils活用

投稿日:

普段はJavaEEで開発を行っているのでデータベースへのアクセスはJPAを活用しています。

ただ、JavaEE環境だとglassfish経由でデータベースを動かしているので、glassfishを動かさずにデータベースへのアクセスをしたいときに、通常はアクセスできません。

そこで緊急的に直でデータベースにアクセスできる手法を探しました。

個人的な要望としては下記のような状態です。

  • JDBCは知っているのですが、もっとスマートにかけるほうほうをしりたい
  • デバッグなども簡単にできる
  • 通常のSQLであってもO/Rマッパーでもどちらでもよい。
  • なるべく設定ファイルなどを追加しないほうがいい
  • JPAでGlassfish経由でなく直にアクセスする方法はしっているが設定がめんどい&少し遅い

こんな方法をいろいろと考えていましたが、DBUtilsというライブラリが便利で、上記条件を満たしているので使うことに。

※似た名前でDBUnitsというものがありますがこれは違います。

インストール

例によって下記をpomに追加します。

http://mvnrepository.com/artifact/commons-dbutils/commons-dbutils/1.5

コード

  • selectでは型を指定し、SQLを入力すればOK
  • よくMap、List<Map>のデータをinsertしたいケースがあるので、これ用のメソッドを容易
  • updateというメソッドはSQLのinseert,update,delete全てを含みます。単純にSQLを投げればOK

バインドさせているものと、いないものがあったりとあまり統一性はないので(とりあえずテストデータのinsertと抽出ができればOKだったので)詳しく仕様を見たい方はリンク先を見てみてください。

リンク(DBUtils以外のライブラリもあり)

http://kazunori-kimura.blogspot.jp/2012/05/dbutils.html

http://d.hatena.ne.jp/Kishi/20081212/1229076102

http://wannabe-note.com/1554

http://lynn1985.blog.shinobi.jp/%E5%8B%89%E5%BC%B7%E3%83%A1%E3%83%A2/maven%E3%81%AE%E7%92%B0%E5%A2%83%E3%81%A7%E3%80%81butterfly%E3%80%80persistence%E3%82%92%E4%BD%BF%E3%81%86%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E8%A8%AD%E5%AE%9A

http://dev.classmethod.jp/server-side/java/iciql/

-Database, Java
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

JSPでのカスタムタグ

前回のインク―ドですが、文字列以上の情報を渡すことはできませんでした。 いろいろ調べたり、上司に聞いてみるとカスタムタグという独自のタグを作る機能があるとのことでさっそく調査。 Contents1 カ …

no image

cakeでのトランザクション、コミット、ロールバック

cakePHP(2.X系)でのトランザクション、コミット、ロールバックについて。 cakePHPでトランザクションを書ける場合、Model内に [crayon-5ada7dc09c1350371208 …

no image

EXISTSと集合

前回に引き続きEXISTSの問題です。 下記のようなテーブル(projects)があり、 project_id | step_nbr | status ———&#8 …

no image

try~catch~finallyで気を付けること

JavaでExceptionが発生したとき、基本的にはtry~catch~finallyをつかっているのですが、今回Exceptionが吐かれないという事態があったのでメモします。 [crayon-5 …

no image

リファクタリング

業務で大幅なリファクタリングをする機会があり、その際の注意だったり、気をつけるべきことなどをまとめておきます。 自分用なので自分にしかわからない言葉で書いてある可能性が大きいです。 気になる方は問い合 …