2009-01-01から1年間の記事一覧
本日はEzJDBCのレスポンスについて説明しようと思います。EzJDBCは照会のレスポンスにこだわって開発しました。JDBCが1とするとEzJDBCは1.2倍になります。ほぼJDBCと同じといって良いのではないでしょうか(言いすぎ?)下記のテーブルの全レコード(500万件)…
以前「EzJDBC機能強化2」で書いていたCASE演算子をEzJDBCで実装しました。一時はタイプセーフEnumを利用すればCASE演算子は不要なのではないかとも考えたのですが、以下の様なCASE演算子の場合はEnumで対応するのは面倒かなっと思い、CASE演算子はあった方が…
本日はEzJDBCで「GROUP BY」する方法について説明したいと思います。ORDERテーブルとORDER_ITEMORDERを結合し、お客様ID毎の請求合計額を求める場合を例に説明いたします。 // ORDERテーブル情報インスタンス生成 ORDER OD = new ORDER(); // ORDERとORDER_I…
職人気質の「こだわり」は、素晴らしい!と称賛さる場合が多いが、実質その気質を継承している人は少なくなっている。その反面「こだわり」を売りにして、利益を上げている会社(業界)が存在するのも事実だ。。。 この場合、こだわりの希少価値が利益につな…
社内からEzJDBCの質問があったので、質問と回答をとめたものを備考録としてメモメモします。 Q1.EzJDBC#relationする場合、個別にORDER BY句オプションが追加できればいいと思います。 A1.個別にORDER BY句オプションというのは、以下の様なことでしょうか?…
EzJDBCの自動バインディングの方法は前回の「EzJDBCの自動バインディングの秘密」で説明いたしました。今回は、テーブルをJOINした結果をエンティティにマッピングする場合の自動バインディングについて説明します。以下の関係のテーブルを結合した結果を例…
今回は、EzJDBCとS2JDBCのイテレータ機能を比較してみようと思います。 イテレータ機能は皆さんご存知の通り、テーブルの照会結果をList等で一括に取得する方法とは異なり、照会結果を1レコードづつ取得する方法です。 それでは早速それぞれのO/R マッパーの…
EzJDBCをJava1.6に対応してから可変長引数とGenericsの便利さにやられっぱなしです。Java1.4の開発には、もう戻れません><
EzJDBCで如何にして、テーブルのデータをエンティティにマッピングしているのか、技術的な面について説明したいと思います。 EzJDBCはテーブルの照会結果をEntityにマッピングするコードは下記のようになります。 例:CUSTOMERテーブルから名前(NANE)が"Taka…
本日は、EzJDBCのSQL自動生成機能の弱点について説明したいと思います。その弱点とはSQL自動生成機能はSQLのカスタマイズが出来ない事にあります。例えば、以下の関係の2テーブルが存在したとします。 【テーブル】 1.CUSTOMERテーブル 2.ORDERテーブル【テ…
以前「EzJDBCで取得する列を限定する!」で説明した通り、EzJDBCで取得する列を限定方法はEzJDBC#includesメソッドを利用していましたが、includesメソッドをやめて、EzJDBC#select()メソッドで取得する列名を限定するようにしました。 下記にサンプルコード…
こんにちは、Entityの自動生成ってフレームワークに依存した感じですっきりないよねとEclipseに語りかけてはコンパイルエラーを出している高橋ですm(__)m 本日は、そんなEntityの自動生成を開発者が自由にカスタマイズ出来る機能について説明したいと思い…
わたしは、以前からO/RマッパーはSQLを意識しても良いとおもっています。 今もその気持ちには変わりはありません。しかしナカナカ同意は頂けないのが事実です。 だからと言って「そーすか、やっぱ、そーすか、じゃSQLを隠ぺいしましょ」と言ってはいけないと…
id:TsutomuUchimaさんの下記のエントリで便利な機能を知ったのでEzServletに取り込んでみました。以前から(<table>タグを含んだ)画面のスクロールをどうにかしなければと考えていたものの放置していた内容だけにドンピシャの内容でした。 テーブルのヘッダを固定し</table>…
こんにちは、EzServletのControllerのソースが今一煩雑でなんとかしなければと考えながらも試行錯誤しているうちに、いつの間にかお酒に溺れいる高橋です。 さて今回は、EzServletの自動生成されるコントローラークラス(ソース)をリファクタリングした結果…
こんにちは、日夜、開発が楽になるFwはどんなものなのかと考え夜も眠れない日々を繰り返した挙句、お酒におぼれている高橋ですm(__)mさて、今回はプロジェクト毎にクラス名の命名規則を設定する機能について説明しようと思います。 まずは、EzServlet(仮名…
こんにちは、常々O/RマッパーはSQLを意識させても良いのではないか!と考えているのですが、なかなか理解されない世界に嫌気をさし、空気が読めるEclipseと会話している高橋ですm(__)m EzJDBC(EzJRAP)では件数を取得するcountメソッドがありますが、このメ…
そろそろEzJDBCの正式名称(クラス名)を決めなくては。。。まぁクラス名を変えるだけなので大した手間ではないのですが。。。 EzJRAP( いーじー・じぇーらっぷ )なんてどうだろうか?EzJRAP : 「Easy JDBC for RDB Access Programming」...うわっ!すっごく微…
EzJDBCでは、照会結果を格納するクラスは以下の2通り存在ます。 1.テーブルに対応したEntity(pluginにより自動生成される) 2.開発者によって作成されたBean 1.の場合はテーブル列名とEntityのプロパティ名(テーブル列名のキャメル記法)が一致しますが、2の場…
仮にJSPもHTMLテンプレートも利用しないで動的ページを作成するには、HTML(Form)クラスを作成すれば良いのではないか! そうすれば完璧なJavaによる動的ページが作成できるしね!ソースは以下の感じ。。。 // HTMLインスタンス生成 Html html = new Html(); …
下記の様なCASE文を含むSQLをEzJDBCで実装しようとするとどうなるか? SELECT *, CASE WHEN AGE >=20 THEN '成人' ELSE '未成年' END AS 項目名 FROM CUSTOMER CS EzJDBCでCASE文を実装すると、こんな感じだろうか(・・? // メインテーブル情報インスタン…
かなり前に「"".equals(value)」か「value.equals("")」の問題が取り上げられていた。 この時は、各所で色々な意見が飛び交っていたが、結果的には「"".equals(value)」の方が優勢だった気がする(個人的感想)。 でも何故か「"".equals(value)」がなじめな…
O/Rマッパーとして、いざと言う時にConnectionが利用できるか否かは大きな問題です。 今回はEzJDBCからConnectionを取得する方法を説明します。 正確には、EzTxクラス(トランザクション管理クラス)により、取得することが出来ます。 EzTxはConnectionを取得…
次はEzJDBC#breakFieldメソッドとEzJDBC#nextDataExistメソッドの実装だな。。。 // ORDERとCUSTOMERを結合し指定した名前を含むデータを照会します。 List list = EzJDBC.from(OD).join(OD.CS) .where(OD.CS.name.like("%takahasi%")) .orderBy(OD.CS.name.…
id:hayasshさんの「2009-10-28 - ひたすらプログラミング日記」を読んで、同等の事をEzJDBCで行った場合と比較してみました。。。 以下のSQLをJPA 2.0で実装した例を見てみましょう。 今回は結合も無い単純なSQLですが、pointは抽出条件の「where A and(B or…
id:da-yoshiさんの「GlassFish V3 b67を使ってJava Persistence 2.0を試す - TYAGE EMOTION」を読んで、同等の事をEzJDBCで行った場合と比較してみました。。。JPAのタイプセーフなCriteriaです。下記のソースを見てください。何が書いてあるかさっぱり分か…
EzJDBCでは「仮想テーブル情報クラス」を簡単に作成する事が出来ます。通常テーブルは正規化されますので、トランザクションテーブルとマスタテーブルに分類されます。例えば、注文(ORDER)テーブルと顧客(CUSTOMER)テーブルがあった場合、注文テーブルには顧…
EzJDBCではテーブルにアクセスする方法が3タイプ存在します。 1.Auto SQL自動生成 2.File SQLファイル 3.Free SQLフリーフォーマット 詳細は「2009-10-23 - T.RYoken がんばる日記 / TryGun blog」を参照して下さい...m(__)m で、EzJDBCはrelationというメ…
これまで、EzJDBCの下記の2つの機能について説明してきました。 1.SQL自動生成機能(EzJDBC-Auto) // メインテーブル情報インスタンスを生成します。 CUSTOMER CUS = new CUSTOMER(); // CUSTOMERテーブルとORDERテーブルを結合しデータを取得します。 List…
今ならHTMLのボタンは<button></button>タグを利用しますよね…(^^)という事で、EzServletで<button></button>タグを利用すれば動的に名称を変更する事ができます。 そんなの当たり前とか言われそうですが…(^^;) 1.Controllerでボタンの名称を設定する場合は下記の通りです。 Hoge.html <button name="execute"><tg:out name="buttonLabel">ボタン</tg></button>…