skillup

技術ブログ

Database Java

O/Rマッパー iciqlについて

投稿日:2015年11月2日 更新日:

以前、このブログでも紹介したO/Rマッパーのiciqlについて、使い方や問題点がある程度わかったので書いておきます。

インストール

さきほどのリンクの通りです。

自動生成

JPAの場合、ネットビーンズからエンティティを自動生成できますがiciqlにも似たような機能があります。

本体のjarファイルを使って以下のようにコマンドをたたけばOKです。

具体的な引数は下記のようになります。

ちなみにもっといろいろな引数を付けられるようです。

ただ、

  • プロパティが全てpublicで出力される。
  • プロパティの並びがバラバラ(後述する問題点で致命的になる。)
  • プロパティの変数名がデータベースのカラムと一緒(スネークケースになる)

など使いにくい点が挙げられます。独自に自動生成プログラム書いたほうがいいかもです・・(汗)

注意点

簡単でいいんですが、いろいろと使いにくいところもありました。私が解決できていないだけかもしれませんが下記に列挙します。

特に日付がらみのものが多かったです。

Date型のインポート

java.util.Dateではなくjava.sql.Dateでないとエラーになります。

不正な値のレコード

もともと入っている日付のレコードに00-00-00 00:00:00などが入っていると取得時にエラーが発生します。

ちなみにエンティティを自動生成する場合、default value=”00-00-00 00:00:00″なんてアノテーションが付きますが、これもエラーになります。ついでにdefault Value=”CURRENT TIMESTAMP”も駄目です。

自動生成機能はあまりスペックが高くないかも・・・です。

executeQueryのselect文

executeQueryという直接sqlを実行できるメソッドがありますが、これで取得する場合、エンティティの順番をデータベースのカラムの順番と一緒にしておく必要があります。

どういうことかいうとテーブルのカラムが

id int
name varchar
age int

という順番で並んでおり、select id, name ,age from person・・・とsqlを実行する場合、エンティティが

などと並んでいるとエラー(nameをintegerに変換できない・・)がでます。

この場合、

と書かなくてはいけません。ちなみにselect * from ・・・などワイルドカードを使うのも駄目です。データベースのカラムの並びと統一してあげる必要があります。

これには正直驚きました。ひょっとしたらどこかで設定をいじれるのかもしれませんが・・・

時下のsqlではなく、通常のselectのメソッドを使う場合は問題ありません。

ただ簡単に使えることは間違ないですし、テストなんかもしやすいのでいい点を積極的に活用してあげましょう。

参考リンク

[Java]iciqlで簡単DBアクセス[ORマッパー]

iciqlで実現するSQL DSLとJDBCリファクタリング

設定ファイル無しで手軽・シンプルに使えるJava O/Rマッパー ICIQLの使い方

https://github.com/decebals/dada

-Database, Java
-,

執筆者:


comment

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

関連記事

no image

Javaのarraycopy

最近あまりJava自体には触っていないですが、資格の勉強をコツコツとすすめていることもあり、新たな発見もあります。 8ヶ月ぐらいJava書いていますが、arraycopyというメソッドをはじめてしりま …

no image

日付けのメソッド

どのプログラムでも必須となる日付け処理。 言語が違うといろいろと面倒です。 とりあえず頻出のものを整理したいと思います。 Contents1 現在時刻の出力2 日付けの設定・取得3 日付けの整形4 文 …

no image

Map,KeySetでのSteam

日常で一番よく使うMapループ系処理について Map KeySetのStreamでの書き方 Map<String,String>でEntrySetではなく、KeySetで展開したいときなど …

no image

オプティマイザと実行計画

データベースがSQLを受け取って処理を実行する前には下記のような段階があります。 Contents1 パーサー2 オプティマイザ3 カタログマネージャー4 テーブルからデータの取得5 参考リンク パー …

no image

小ネタ集

最近覚えた小ネタをのせていきます。 熟練のプログラマからすると当たり前のことが多いと思いますが・・・ Contents1 {}でスコープ限定2 リダイレクト:face-redirect=true3 H …