株式会社ユーザベースの技術チームブログです。簡単シンプルなSQLライブラリ『JDBI』2015-02-04簡単シンプルなSQLライブラリ『JDBI』Tweet技術チームインターンの前田です。アプリケーションを開発していると、データベースと連携する必要が出てくる場合が多いかと思います。この記事では、JavaプログラムからRDBMSを利用する際に便利なライブラリを紹介します。このライブラリは、私が取り組んだ業務でも使用したもので、JDBIと呼ばれています。JDBIとはJavaプログラム↔RDBMS間の連携に便利なSQLライブラリです。JDBIはJDBCの上に構築されているもので、JDBCのAPIの使い勝手の悪さをカバーしてくれます。JDBIの便利な点JDBIを利用することで、簡単にプログラムのロジックとSQL文を分離することが出来ます。プログラム中のオブジェクトとRDBMSのレコード間の対応付けを行う、所謂O/Rマッパーとしても機能します。O/Rマッピングの設定に、設定ファイルを使用しません。似たような機能を持つフレームワークとしてHibernate、MyBatisなどが挙げられますが、これらはO/Rマッピングのための各種ファイル(~.xml等)の設定が必要であったり、それらを自動設定するためにもツールの使用が必要であったりで、利用がやや複雑な印象を受けます。JDBIであれば、そのような設定ファイルや複雑な設定が不要で、シンプルなJavaコードのみで簡単に動作させることができます。以下、簡単にその使用例を紹介します。次のようなクラスがあったとします。アクセサメソッドは省略}上記のオブジェクトに対応するテーブルを作成することにします。このとき、Daoは以下のようになります(JDBIではDaoにはインターフェースを使用します)。nameの値から対応するnum_of_employeesを取得するSQL文を書いています。d);}それぞれの処理を詳しく見ていきます。データを更新するSQL文を表しています。findByNameメソッドで使用している@Bindアノテーションは、プレースホルダに入るパラメータを指定するために使用します。この場合だと、引数で与えられたString型のnに格納されている値がSQL文内の「:name」に対応付けられます。メソッドの戻り値には、取得するデータの型を指定します。上記のfindByNameメソッドはString型のパラメータを元にint型のデータを取得したいので、戻り値はint型です。insertメソッドには、引数にとったJavaオブジェクトをRDBMSに挿入する処理が書かれています。@BindBeanアノテーションが付けられているオブジェクトに対して、プレースホルダの「:◯◯」という記述の◯◯に対応するgetterが呼び出されることによって、プレースホルダへの対応付けが行われます。この場合だと、Company型のdのgetName()とgetNum()メソッドが呼び出されます。ここでは動作の説明を書きましたが、このような説明がなくても上記のコードを見ればすぐに動作イメージが掴めるような記述方式になっていると思います。実際にDaoを使用してSQL文を実行するクラスを次に示します。}}上記のコードでは、「10」とコンソール出力します。このように、JDBIではシンプル且つ簡単にデータベースとJavaプログラムを連携することができます。ここではオブジェクト→レコードのマッピングを行いましたが、もちろんレコード→オブジェクトへのマッピングも可能です。トランザクション機能などの基本的な機能も備えています。現在では様々なO/Rマッピングフレームワークが存在し、状況や好みによってどれを選択するかは変わってくるかと思いますが、このライブラリもその選択肢の一つになり得るものだと思います。多国通貨」をハンズオンしたら快適で楽しかった今日は。SPEEDAの開発をやっている濱口です。最近リリー...2019-10-21pytest-mock使ってハマったことこんにちは。SPEEDA開発チームの掛川です。私たちの開発チ...2018-04-03はじめてのDuctSPEEDA開発の中村です。»プロフィール『経済情報で、世界を変える』をミッションに、企業・業界情報プラットフォーム「SPEEDA」やソーシャル経済ニュース「NewsPicks」、ABMを強力にサポートする「FORCAS」、スタートアップの情報収集を圧倒的効率化「entrepedia」などを提供する株式会社ユーザベースの技術チームブログです。多国通貨」をハンズオンしたら快適で楽しかったGo言語でオブジェクト指向プログラミングの基本(型編)月別アーカイブ検索@Uzabase_Techさんのツイートスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。