EzJDBC

JPAのCriteriaか(--;) vol.2

id:hayasshさんの「2009-10-28 - ひたすらプログラミング日記」を読んで、同等の事をEzJDBCで行った場合と比較してみました。。。 以下のSQLをJPA 2.0で実装した例を見てみましょう。 今回は結合も無い単純なSQLですが、pointは抽出条件の「where A and(B or…

JPAのCriteriaか(--;)

id:da-yoshiさんの「GlassFish V3 b67を使ってJava Persistence 2.0を試す - TYAGE EMOTION」を読んで、同等の事をEzJDBCで行った場合と比較してみました。。。JPAのタイプセーフなCriteriaです。下記のソースを見てください。何が書いてあるかさっぱり分か…

EzJDBCで仮想テーブル情報クラスを作る意味

EzJDBCでは「仮想テーブル情報クラス」を簡単に作成する事が出来ます。通常テーブルは正規化されますので、トランザクションテーブルとマスタテーブルに分類されます。例えば、注文(ORDER)テーブルと顧客(CUSTOMER)テーブルがあった場合、注文テーブルには顧…

EzJDBC-FileとFreeではrelationメソッドが利用できない。。。

EzJDBCではテーブルにアクセスする方法が3タイプ存在します。 1.Auto SQL自動生成 2.File SQLファイル 3.Free SQLフリーフォーマット 詳細は「2009-10-23 - T.RYoken がんばる日記 / TryGun blog」を参照して下さい...m(__)m で、EzJDBCはrelationというメ…

EzJDBCの第3の機能!

これまで、EzJDBCの下記の2つの機能について説明してきました。 1.SQL自動生成機能(EzJDBC-Auto) // メインテーブル情報インスタンスを生成します。 CUSTOMER CUS = new CUSTOMER(); // CUSTOMERテーブルとORDERテーブルを結合しデータを取得します。 List…

なかなか強烈な一言を頂戴しました。。。

Aさん「なんか最近O/Rマッパーとか一所懸命作っているだってね」わたし「はい...(^^)」Aさん「そこでチョッと聞きたいんだけど、GAE/Jとか知ってる?」わたし「はい...(--;)」Aさん「そのGAE/Jとかで開発するようになったら、開発中のO/Rマッパーは使えな…

EzJDBCはキャストが不要になりました。

EzJDBCは、Java 6に対応しましたので、キャストが不要になりました。下記の照会系のソースで説明します。Java 1.4対応版 EzJDBCで照会した場合 // メインテーブルとなるお客様テーブル情報インスタンスを生成 CUSTOMER _CS = new CUSTOMER(); // お客様と注…

タイプセーフなEzJDBCは直接することを推奨します

取り急ぎ思ったことだけ。。。DAOの皮をかぶったEzJDBCは魅力がない(薄い)気がするので。。。EzJDBCは「直接利用することを推奨」します。( ̄O ̄)/いったい何の表明なのでしょう(・・? 決してMVCモデル...カビが生えたもでるなんていらねーや!的な発言…

後輩にJava式SQLは難しいと言われた><

昨日、会社の後輩にJava式SQLは難しいですよね。。。と言われた。 何故?と理由を聞いてみた。。。 彼女曰く、素のSQLであればtoolを利用して実際に実行し、結果を確かめられるため素直に受け入れる事ができるが、Java式SQLだと利用したいSQLをJavaで記述す…

EzJDBCでJOIN結果をEntityの親子関係にセットする方法!

今回はEzJDBCでテーブル結合した結果をリレーション形式で取得する方法について説明したいと思います。 リレーション形式って...( ̄口 ̄|||)と引かれている方も多いでしょうが、要は、JOINしたテーブルの照会結果をフラットに取得するか!Entityの親子関係…

EzJDBCのscaffold(プラグイン)です!vol.2

EzJDBCで利用する「テーブル情報クラス」の結合(JOIN)の設定の仕方について説明したいと思います。結合(JOIN)の設定は、前回説明したテーブル定義書に付加情報をつけるだけでokです。 前回は下記の「お客様(CUSTOMER)テーブル」定義書を作成しました。例:お…

EzJDBCのscaffold(プラグイン)です!

EzJDBCで利用する「テーブル情報クラス」と「エンティティ」を自動生成するEclipse plugin(TRYGENE)について説明したいと思います。テーブル情報クラスは下記のソースのfromメソッドで設定する「CUSTOMER」であり、エンティティはfindメソッドで設定する「Cu…

EzJDBCで利用可能な比較演算子!

[追記]表の12番目に「動的に比較演算子を設定」するメソッドの説明を追記しました。 EzJDBCで利用可能な比較演算子について説明したいと思います。現在利用可能な比較演算子は以下の11種類です。 比較演算子 method 補足 1= eq(値) 2!=ne(値) 3> gt(値) 4>=g…

EzJDBCで複雑な抽出条件を設定する方法!

EzJDBCでは下記のような複雑(?)な抽出条件を設定する方法を説明します。 WHERE 住所 like 'TOKYO%' AND (性別='男' AND 年齢30 OR 性別='女' AND (年齢20 OR 年齢>60)) // テーブル情報インスタンスを生成 CUSTOMER _CS = new CUSTOMER(); // CUSTOMERテーブ…

EzJDBCでiteratorを利用して更新する方法!

EzJDBCでは照会結果を1レコード毎に取得し更新する事ができます。 // トランザクション開始 EzTx.begin(); // テーブル情報インスタンスを生成 CUSTOMER _CS = new CUSTOMER(); // CUSTOMERテーブルを照会 EzJDBC jdbc = EzJDBC.from(_CS).where(_CS.NAME.li…

EzJDBCを利用すると生産性が向上する理由!

社内向けのエントリー。。。 EzJDBCを利用すると生産性が向上します。。。おそらく現在の2倍〜3倍は硬い!!!では何故?EzJDBCを利用すると生産性が向上するか!の理由の一部を説明したいと思います。。。 以下のソースを記述するのに、キーボードを叩く回…

EzJDBCでロックを指定する方法!

EzJDBCでロックする参照を行う方法は、無敵に簡単です(日本語が変だ)。ロックの種類は、プロジェクトまたはユースケースによって異なると思います。そんな場合にもEzJDBCは対応います。1.プロジェクト単位で設定したロックを利用する場合 EzTx.propertie…

EzJDBCで複数DBに接続する方法

EzJDBCで複数のRDBにアクセスする方法は、無敵に簡単です(日本語が変だ)ずばりこれだけ。。。 // JDBC接続の場合 EzJDBC jdbc = new EzJDBC("DRIVER","URL","USERID","PASSWORD")... // Datasource接続の場合 EzJDBC jdbc = new EzJDBC("datasourceキー").…

EzJDBCで件数を取得する!vol.2

以下のエントリ「EzJDBCで件数を取得する!」に対して、内輪から同じ事を2度書くのは生産性が良くないとの指摘を受けたので補足説明を…えーと、EzJDBCでは最後のメソッド(今回でいえばfindやcount)が呼び出された時にSQLを生成するので、同じ内容を何度も記…

EzJDBCで件数を取得する!

id:hiro_nemuさんのblogで、以下のエントリを見つけたのでEzJDBCの場合を書いてみる。。。 S2JDBCで件数を取得する(SELECT COUNT(*))ページング処理するときlimit, offsetを指定したデータ取得用SQLと、総件数を取得するSQLってSQL自体大体同じ内容なので、…

EzJDBCで妄想してみた(^^;)

EzJDBCをバッチ系処理(大量データを取り扱う処理)でもストレスなく利用する方法を検討中。。。 イメージは以下のような感じ…1.通常の照会と同様にEzJDBCを利用してテーブルを照会するロジックを記述。 2.EzJDBC#.create(仮名)メソッドを呼び出し、テンポラリ…

EzJDBCのEXPORT機能で抽出条件を指定する方法!

EzJDBCのEXPORT機能では抽出条件を指定することが出来ます。指定の方法は通常の照会系と同様です。簡単ですね...(^^) // EXPORTするテーブル情報インスタンスを生成 CUSTOMER _CS = new CUSTOMER(); // 削除コードがNULLのデータをEXPORT boolean result = n…

EzJDBCでテーブルのIMPORT,EXPORTする機能!

題の通りの機能です(^^; // CUSTOMERテーブルをEXPORT boolean result = new EzJDBC().from(new CUSTOMER()).exportFile("出力ファイルPATH"); // CUSTOMERテーブルにIMPORT boolean result = new EzJDBC().to(new CUSTOMER()).importFile("入力ファイル…

テーブル更新時の自動セット項目について考えてみた!

EzJDBCをタイプセーフに記述するためのテーブルメタ情報クラスのプロパティ(列情報)にinsertAutoSetWhenNull(...)メソッドなどつけると便利なのだろうか(・・? 例えば以下のような感じ… /** CUSTOMERテーブルのメタデータクラス */ public class CUSTOMER …

EzJDBCでキャッシュする方法!

EzJDBCでは照会結果をキャッシュする機能が存在します。キャッシュするには「EzJDBC#cache()」メソッドで指定します。 // テーブル情報インスタンスを生成 CUSTOMER _CS = new CUSTOMER(); // CUSTOMERテーブルを照会するJDBCインスタンスを生成します EzJDB…

EzJDBCでEntityのプロパティーが特定値の場合は更新対象外にする方法

テーブルを更新(update)する際に、特定値(null等)の場合は更新対象外にしたい場合があるかと思います。その様な時、EzJDBCではexcludeValuesメソッドを利用します。 // テーブル情報インスタンスを生成 CUSTOMER _CS = new CUSTOMER(); // Entityのプロパテ…

EzJDBCの更新系メソッドに以下の一括更新機能!

Entityを利用しないで、条件にあったデータを一括更新したい場合もあるかと思います。EzJDBCではタイプセーフに一括更新をする機能を持っています。 変更の場合は以下の様に記述 // 更新対象となるテーブル情報インスタンスを生成 _CUSTOMER CS = new _CUSTO…

EzJDBCのパラメータマーカー(?)に値を埋め込む方法

EzJDBC#bindメソッドを呼び出せばok! // テーブル情報インスタンスを生成 CUSTOMER _CS = new CUSTOMER(); // IDを指定してCUSTOMERを取得する Customer customer = new EzJDBC().from(_CS).where(_CS.ID.eq(1)).bind().find(Customer.class); SQLインジェ…

EzJDBCで取得する列を限定する!

以下のエントリを見つけたので、EzJDBCの場合を書いてみる。。。 S2JDBCの流れるインターフェースで検索すると、すべてのカラムが取得されます。嫌ならsqlファイルに書けばいいじゃん。って話ですが、せっかくのタイプセーフな検索が意味なし! 悩んだ末、la…

EzJDBCの排他制御

EzJDBCの排他制御は以下の様に記述します。現在は、排他制御エラーが発生した場合はExceptionを発行してますが、いけてない気がする。。。 // 更新対象となるテーブル情報インスタンス CUSTOMER _CUS = new CUSTOMER(); // Customerエンティティの内容をCUST…