skillup

技術ブログ

Database Java

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

投稿日:

以前、このブログでも紹介した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のメソッドを使う場合は問題ありません。

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

参考リンク

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

http://qiita.com/k–kato/items/507e70561382a03e959b

http://netbuffalo.doorblog.jp/archives/4350590.html

https://github.com/decebals/dada

-Database, Java
-,

執筆者:


comment

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

関連記事

no image

JPAでのデータベースとの同期

このブログでも何回か書いてきたJPAですが、新規レコードをインサートさせた際IDを取得し、そのIDをもとに何らかのキーを作る、そういう処理があったので紹介させていただきます。 何回か書いてますが、JP …

no image

herokuでMySQL

昨日に続き、heroku+MySQLのメモです。 herokuはディフォルトではPostgreSQLですが、アドオンを使うとMySQLも使えるようになります。 使い方ですが、herokuの管理画面でク …

no image

Fileのアップロード

業務でCSVのアップロードを行っていますが、ファイルになりますと当然文字列ではなく、バイナリ形式のデータが必要になります。 アップロード自体の処理を書いていなかったので、その扱い方についてちょっと書い …

no image

MySQLのメモリ設定

実務で結構サーバーをヘビーに使われるお客さんがいて、SQLが遅くなったりとしています。 なんとか対策しないといけないので、いろいろと調査をいます。 それで今回はMySQLのメモリ問題など。 MySQL …

no image

JSPでのカスタムタグ

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