帳モメのotanuft

Stay hungry, stay foolish.

2005-01-01から1年間の記事一覧

iBATIS Tools Abator

iBATIS用のソースコード自動生成ツールがでました。 http://ibatis.apache.org/abator.html 内容はデータベースドリブンのMDAツールといったところです。 動作条件は * Eclipse 3.0 or higher (including Rational Application Developer/Software rchitect …

DAO Framework 2.1.6のバグ

先日リリースされたDAO Framework 2.1.6を使うと、TopLinkを使っていなくても java.lang.NoClassDefFoundError: oracle/toplink/sessions/UnitOfWork があがる。 ToplinkDaoTransactionManagerの初期化を行うところでExceptionがあがっているようだ。 http:/…

iBATIS for Java 2.1.6 Released

iBATIS for Java 2.1.6が11/5にリリースされました。 メンテナンスリリースです。 修正点は o Fixed IBATIS-198 Call "getDataSource()" of SqlMapClientImpl will cause application to hang o Fixed IBATIS-197 Call "getDataSource()" of SqlMapClientImp…

Commons Lang

いろいろな便利メソッドがまとめられているクラス群。 何度も書いたことのあるユーティリティメソッドが豊富。 現在のバージョンは2.1

iBATIS: PaginatedList

iBATISでは、SQLの実行時の戻り値にList、Map、Object、PaginatedListなどがある。 このなかで、 PaginatedListはページング機能がついたListになっている。 sqlMap.queryForPaginatedList(String id, Object parameterObject, int pageSize) で、sqlMapのid…

iBATIS: パフォーマンス改善

iBATISのWikiに載っていたもの。 (もちろん、SQLやDB設計の見直しが先なのだが) やる価値の高い順。 1. ステートメントでparameterMapかparameterClassを明確に定義する。 2. 明示的に<resultMap>を定義。そして<remapResults>を使用しない。 3. <resultMap>、<resultClass>にJavaBeanを使う。 (MapやXMLを使</resultclass></resultmap></remapresults></resultmap>…

iBATIS: SqlMap remapResults

問い合わせの結果、カラムが動的に変化するSQLを使用する場合、 remapResults="true"を各ステートメントに 追加しなければならない。 例えばテーブルが動的に変わるSQLなどを使用する場合。 下記のSqlMapを定義した場合 <select id="selectTable" resultClass="java.util.HashMap"> SELECT * FROM $value$ </select> List l = qu…

Hibernate3のNativeSQL

Hibernate3からの機能でNative SQLを実行できるようになった。 Native SQLの実行の方法は2種類。 ・Session.createSQLQuery()でQueryを作成する ・マッピングXML(*.hbm.xml)で定義する方法 ■createSQLQueryを使う方法 使い方は、今までのHQLと同様に List ca…

iBATIS:Tips 同じSQLをまとめる

SQLMapのXMLを書いていると同じSQLが何度も出現する場合があります。 例えば、検索結果の件数と検索結果を取得したい場合などそんな場合、 同じSQLをまとめておいて<statement/>の中から参照することができます。 <select id="findGuitar" resultMap="guitarResult" parameterClass="string"> SELECT ID, NAME, MAKER_NAME FROM GUITAR WHERE ID = #</select></statement/>…

iBATIS:OracleのBLOBとCLOBの扱いについて

SpringのLobHandlerを使用する。 1.SpringとiBATISを連携させる際にapplicationContext.xmlに 以下のようにLobHandlerを登録する。 <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler"/> </bean>

iBATIS for Java 2.1.5 Released

iBATIS for Java 2.1.5 がリリースされました。 バグフィックスがメインです。 大きな変更点は ・CommonsLoggingの依存がなくなりました。 ・DTDまわりの修正 など。 BugFixed are * Fixed IBATIS-136 groupBy not carried forward to extended result maps …

Mavenリポジトリ

iBATISのjarがいつのまにか、やっとIBiblioに、置かれました。 これで簡単にMavenで、使えるようになりました。 <dependency> <groupId>com.ibatis</groupId> <artifactId>ibatis-common</artifactId> <version>1.3.1</version> </dependency> な、やり方でとりにいけます。

iBATISがApacheのトップレベルプロジェクトに

iBATISが正式に、Apacheのプロジェクトになって、 ASFのトップレベルドメインでサイトができたみたいです。 まずは、めでたいですな。 http://ibatis.apache.org/ それにともなって、DTDのURLが変わるみたいです。

iBATIS for Java 2.1.0 Released

iBATIS for Java 2.1.0が、リリースされました。 Change Log: http://sourceforge.net/project/shownotes.php?release_id=327667 Download: http://www.ibatis.com/downloads.html メインは、バグフィックスですね。

DAO Frameworkについて

iBATISは、大きく分けて2つのものから構成されています。 DAO FrameworkとSqlMapsで、それぞれ、独立しています。

Qdox OverView

Qdoxとは? QDoxは高速な、Javaソースコード解析ツールです。 CodeGeneratorやドキュメンテーションツールなどに 使われることを想定して作られています。 JavaDocタグの解析を、サポートしています。 Xjavadocの、拡張版のような感じです。 クラス、インタ…

Xdoclet

iBATIS用のXdocletプラグインを作成中。 XdocletのTemplate Languageを覚えるのが面倒くさい。 QdoxとVelocityを使えば楽にできそうなのに、 と思ってたら、Xdoclet2で、そうなっていた。 しかし、情報が少なさすぎ。

iBATIS 複雑なプロパティ(列挙型)

エンティティに複雑なプロパティを使用する場合。 例えば、列挙型。

Jaxorのサンプル

Jaxorのサンプル Jaxorをダウンロードする。 http://jaxor.sourceforge.net/ 現在の最新は3.5 今回はOracleを使用する。 SCOTTのEMP表をマッピングしてみる。 今回使用したソース

Jaxor Overview

Jaxor - Model Driven Persistence Jaxor Overview

iBATIS ストアドプロシージャー

OracleのPL/SQLを呼んでみる

iBATISの動的SQL2

SqlMapのバインド変数で、$と#の違いについて $XXX$→PreparedStatementの固定文字(そのプロパティの値で置き換わる) #XXX#→PreparedStatementのバインド変数(?に置き換わる) として扱われる。

iBATISとCGLib

LazyLoadingを調べたときに、仕組みを少し調べてみた。 iBATISやHibernateは、LazyLoadingを実現するためにCGLIBを使っています。 http://cglib.sourceforge.net/ CGLIBは、Code Generation Libraryの略で、 読んで字のごとく、Javaコード生成ライブラリです…

iBATIS LazyLoading

iBATISでも、LazyLoading機能がある。 LazyLoadingとは、実際にそのクラスをロードするときに、 初めて、インスタンス化されるもの。 iBATISでも、親子関係のレコードを、一度にマッピングしてロードできる。 今回のサンプルでは、 の関係のドメインモデルで…

N+1 Selects問題

iBATISに限らず、O/Rマッピングでの問題点。 ネストした、子レコードの自動取得時に、親レコードが複数検索される場合、 ヒットした親レコードの数だけ、子レコードにSELECT文が発行されることが有る。 親レコードが、キー検索のような場合は問題が少ないが…

INSERTするとき

INSERTするとき、 <insert> INSERT INTO TEST (VAL1, VAL2, VAL3) VALUES(#val1#,#val2#,#val3#) </insert> とやると、Nullの値のときにSQLExcptionが上がる(Oralcle)。 なので、 <insert> INSERT INTO TEST (VAL1, VAL2, VAL3) VALUES(#val1::NUMERIC:NO_ENTRY#,#val2:VARCHAR:NO_ENT</insert>…

マップするBeanを作らない

マップするBeanを作らないで、iBATISを使ってみる。 ParameterClassにMap、ResultClassにMapを使う。 まぁ、他のO/Rマップツールでもありそうだけど、あえてやってみる。 利用価値あるのか?

iBATISの動的SQL

iBATISで動的SQLを作成する Hibernateと違い、iBATISの動的SQLはSqlMap定義で指定する。 クエリーパラメータを渡して、その値をiBATISが判別してSQLを生成する。 Javaのプログラム的な部分はないので、XMLを修正すれば、変更できる。 HQLのような、自分でSQL…

iBATISのキャッシュ

■キャッシュ SqlMapConfig.xmlに<settings> Elementを書かないと デフォルトではキャッシュは有効だが有効にならない。 謎。 今回使用したソース マッピングファイルで定義する。 (SqlMapXmlファイル)</settings>

iBATIS + Spring

Springを使った、iBATISのサンプル。 環境: Sun j2sdk1.4.2_05 Maven 1.0.2 使い方はテストケースを参照。 #maven test で、必要なライブラリをダウンロードした後、テストを実行します。 HSQLを使用しているので、データベースを用意しなくても実行できま…