CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。
![iBATIS.NETにてO/Rマッピングを行う(SQL Maps編):CodeZine](https://cdn-ak-scissors.b.st-hatena.com/image/square/d377914422f1926b6317e6047d6c34372254f190/height=288;version=1;width=512/https%3A%2F%2Fcodezine.jp%2Fstatic%2Fimages%2Farticle%2F112%2F112_arena.png)
iBatisには、動的SQLを作成する機能があります。 これが使えるようになると、iBatisがグッと使いやすくなります。 動的SQLは通常以下のようにして作成します。 <sql id="xxxx" resultClass="int"> select * from xxxx <dynamic prepend="where"> <!-- 動的条件を記述. --> </dynamic> </sql> 上記を見ていただいたらお分かりのように <dynamic prepend="where"> </dynamic> としている部分が動的SQLの宣言部分です。 属性としているprependの部分は省略可能です。 これがどのように動作するかというと、dynamic要素の中の要素の 一つでもtrueとなった際にSQL本体にwhereの文字が追加されます。 つまりどの要素もfalseの場合は、whereは
前回では、O/RマッピングおよびO/Rマッピング・ツールの概要について解説し、.NET向けの代表的なO/Rマッピング・ツールである「NHibernate」を紹介した。 O/Rマッピング・ツールを使えば、(C#やVB.NETの)オブジェクトとデータベース上のテーブルとをマッピングできる。これによって、アプリケーションからはオブジェクトのプロパティにアクセスするだけで、直感的にテーブル上の各フィールドにアクセスすることが可能になるというわけだ。 前回の冒頭で示しているように、.NET環境で利用可能なO/Rマッピング・ツールはすでにいくつもが提供されている。今回は、NHibernateと並び.NET向けの代表的なO/Rマッピング・ツールである「iBATIS.NET」について解説しながら、実際にそれを利用したASP.NETのWebアプリケーションを作成していく。 前回で見たように、NHiberna
まず、事の発端は MySQLにて発生したToo many connectionsというエラーだ。 これは、文字通り既に max_connections 分、クライアントから mysqld サーバーへの接続が行われているので、これ以上の接続は無理だというエラー。 デフォルトだとMySQLの設定は、 ・同時接続数は、100(正確には101) ・待機時間は、8時間 現在は、デフォで運用している。 MySQLのThreads_connectedがmax_connections以上になると、上記エラーの発生となる。 まず、発生原因として考えられるのは、 ・単純に見積もりミス。100では足りなかった。 ・プログラム内で複数回コネクションを作ったり、コネクションを閉じなかったりすると待機中のコネクションだらけになる。待機中のコネクションが8時間経過して消えるまで他のコネクションが作れない。 がある。 ま
はじめに iBATISはSQLを利用することに注力したフレームワークです。高機能なO/Rマッピングフレームワークに比べて簡単に理解でき、レガシーなJDBC、ResultSetを使ったプログラミングから簡単に乗り換えられます。 特にSQLを多用する人には使いやすいフレームワークです。 この記事は前回の「iBATISを使ったO/RマッピングによるDBアクセスの実例」の続編です。前回はSELECT、INSERT、UPDATE、DELETEの基本的な記述方法についてサンプルを紹介しました。今回はSELECT文に注目し、検索結果のマッピングと動的SQLの記述方法について説明します。 iBATISの基本的な内容は、前回の記事を参考にしていただけると、分かりやすいと思います。 対象読者 Javaの基本をマスターしている人 SQL文を理解している人 必要な環境 iBATIS 2.3.0、J2SE 5.0の
台湾の新北市新店区に住む日本人エンジニアの日々の記録です。「仕事は楽しんでやる!」をモットーにしております。 Author:けい 公開したWebサービス・アプリ一覧はこちら ※2014年12月、私が個人で開発したWebサービス・アプリへの 累計アクセス数は8億を超えました。 負荷対策頑張ります。日々精進していきます!! ■■■ 業務経歴 ■■■ 社会人1年目:携帯電話開発。画面周りを1年間 2年目 :海外向け携帯電話ミドルウェア開発 ブラウザとプロトコルスタック周り 2年目後半~:携帯電話の通信専用チップ開発 3年目:カーナビ。画面周りの開発 3年目後半~:BDビデオカメラ 組み込みLinux カーネルと ドライバの開発。 4年目12月:プロジェクト途中で退社 ~ここまではC、またはC++で開発~ ~ここからJavaがメインの開発~ 4年目1月:Web系の会社に転職 ~4ヶ月間の研修 5年
iBATIS で、MySQL 、BIG INT 型にマッピングする場合、 JavaBean 側は、java.lang.Object で対象カラムを用意する。 格納された Object要素に対して、java.math.BigInteger でキャストして値を求める。 格納する時は、BigInteger → java.lang.Object でセットして SqlMapClient の insert を実行するなどの対処が必要になる。 ===== 例 =============== public class TblSample{ public Object id; public String name; public TblSample(){} public TblSample(BigInteger id,String name){ this.id = id; this.
■キャッシュ SqlMapConfig.xmlに<settings> Elementを書かないと デフォルトではキャッシュは有効だが有効にならない。 謎。 今回使用したソース マッピングファイルで定義する。 (SqlMapXmlファイル) cacheModel id・・・ID type・・・キャッシュのタイプ flushInterval・・・キャッシュの生存期間。 以下を設定できる milliseconds seconds minutes hours flushOnExecute 実行されたらキャッシュをクリアするステートメントのID おすすめはMEMORYらしい キャッシュのタイプ MEMORY メモリーの量に応じて、クリアされたりする。 ガベージコレクタに依存したキャッシュ <cacheModel id="product-cache" type="MEMORY"> <flushInte
2009年3月16日 iBATIS で直前の INSERT により生成された ID 値を取得する iBATIS で、直前の INSERT 文により AUTO_INCREMENT カラムに生成された ID 値を取得する方法の備忘録です。MySQL 5 環境を前提とします。 次の構造のテーブルを想定します。 CREATE DATABASE foo ( id BIGINT NOT NULL auto_increment, hoge VARCHAR(16) NOT NULL, fuga VARCHAR(16) NOT NULL, PRIMARY KEY (id) ); INSERT 文でデータを挿入します。 mysql> INSERT INTO foo (hoge,fuga) VALUES ('aaa','bbb'); この INSERT 文で生成された id の値は、次のように取得できます (L
はじめに iBATISはSQLを利用することに注力したフレームワークです。高機能なO/Rマッピングフレームワークに比べて簡単に理解でき、レガシーなJDBC、ResultSetを使ったプログラミングから簡単に乗り換えられます。 特にSQLを多用する人には使いやすいフレームワークです。 SQLは使いたいがJDBCは低レベルすぎる 高機能なO/Rマッピングフレームワークは難しすぎる ソースコードからSQLを分離したいが動的なSQLの実装も必要 このようなケースで、iBATISは特に有効です。 本記事では、たくさんのサンプルソースを解説することで、「iBATISを使えばこんな風に書ける」ということが分かるようにしています。環境設定や、設定ファイルについての細かい説明は簡略化してあります。 対象読者 Javaの基本をマスターしている人 SQL文を理解している人 必要な環境 iBATIS 2.3.0、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く