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

SQL基礎 case式について

case式に関して。 集約系の関数では複雑な処理を一気に行うことができる。 case式は1列のみ有効。複数の列に対して行うことはできない。 case ~ when ・・・thenではwhenが評価され …

no image

JavaSEでのCDI

以前、JavaSEでもCDIを使ってみたい!と思ったのですが、以前は探し方が悪かったのか情報を見つけ出すことができませんでした。 が、昨日ちょっと検索したらちょっと情報があり、無事実装できたのでメモし …

no image

SQL基礎 ウィンドウ関数

SQLの基礎(主にSELECT)を whereはレコードに対しての集計、havingはレコードの集合に対しての集計 ビューは一時的なselect文なのでサブクエリとほぼ等価 条件分岐で出力項目を変えた …

no image

サブクエリ 移動平均など

前回の応用編です。 日付、入出金、残高はできましたが、ここからさらに、現在のレコードから3行以内(3行あれば3行、なければそれ以内でできるだけ)のレコードの合計値を出す計算を考えます。 結果だけ先に書 …

no image

文字列変換系処理まとめ

Javaで文字列の変換(全角、半角など)の処理のまとめです。 ブログに記事として書こうと思ったのですが、丸々コピペになってしまうので、それじゃあ元リンクを紹介したほうがいいかなと思い、今日は基本的にリ …

アーカイブ