2005-01-01から1年間の記事一覧
iBATIS用のソースコード自動生成ツールがでました。 http://ibatis.apache.org/abator.html 内容はデータベースドリブンのMDAツールといったところです。 動作条件は * Eclipse 3.0 or higher (including Rational Application Developer/Software rchitect …
先日リリースされたDAO Framework 2.1.6を使うと、TopLinkを使っていなくても java.lang.NoClassDefFoundError: oracle/toplink/sessions/UnitOfWork があがる。 ToplinkDaoTransactionManagerの初期化を行うところでExceptionがあがっているようだ。 http:/…
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…
いろいろな便利メソッドがまとめられているクラス群。 何度も書いたことのあるユーティリティメソッドが豊富。 現在のバージョンは2.1
iBATISでは、SQLの実行時の戻り値にList、Map、Object、PaginatedListなどがある。 このなかで、 PaginatedListはページング機能がついたListになっている。 sqlMap.queryForPaginatedList(String id, Object parameterObject, int pageSize) で、sqlMapのid…
iBATISのWikiに載っていたもの。 (もちろん、SQLやDB設計の見直しが先なのだが) やる価値の高い順。 1. ステートメントでparameterMapかparameterClassを明確に定義する。 2. 明示的に<resultMap>を定義。そして<remapResults>を使用しない。 3. <resultMap>、<resultClass>にJavaBeanを使う。 (MapやXMLを使</resultclass></resultmap></remapresults></resultmap>…
問い合わせの結果、カラムが動的に変化するSQLを使用する場合、 remapResults="true"を各ステートメントに 追加しなければならない。 例えばテーブルが動的に変わるSQLなどを使用する場合。 下記のSqlMapを定義した場合 <select id="selectTable" resultClass="java.util.HashMap"> SELECT * FROM $value$ </select> List l = qu…
Hibernate3からの機能でNative SQLを実行できるようになった。 Native SQLの実行の方法は2種類。 ・Session.createSQLQuery()でQueryを作成する ・マッピングXML(*.hbm.xml)で定義する方法 ■createSQLQueryを使う方法 使い方は、今までのHQLと同様に List ca…
SQLMapのXMLを書いていると同じSQLが何度も出現する場合があります。 例えば、検索結果の件数と検索結果を取得したい場合などそんな場合、 同じSQLをまとめておいて<statement/>の中から参照することができます。 <select id="findGuitar" resultMap="guitarResult" parameterClass="string"> SELECT ID, NAME, MAKER_NAME FROM GUITAR WHERE ID = #</select></statement/>…
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 がリリースされました。 バグフィックスがメインです。 大きな変更点は ・CommonsLoggingの依存がなくなりました。 ・DTDまわりの修正 など。 BugFixed are * Fixed IBATIS-136 groupBy not carried forward to extended result maps …
iBATISのjarがいつのまにか、やっとIBiblioに、置かれました。 これで簡単にMavenで、使えるようになりました。 <dependency> <groupId>com.ibatis</groupId> <artifactId>ibatis-common</artifactId> <version>1.3.1</version> </dependency> な、やり方でとりにいけます。
iBATISが正式に、Apacheのプロジェクトになって、 ASFのトップレベルドメインでサイトができたみたいです。 まずは、めでたいですな。 http://ibatis.apache.org/ それにともなって、DTDのURLが変わるみたいです。
iBATIS for Java 2.1.0が、リリースされました。 Change Log: http://sourceforge.net/project/shownotes.php?release_id=327667 Download: http://www.ibatis.com/downloads.html メインは、バグフィックスですね。
iBATISは、大きく分けて2つのものから構成されています。 DAO FrameworkとSqlMapsで、それぞれ、独立しています。
Qdoxとは? QDoxは高速な、Javaソースコード解析ツールです。 CodeGeneratorやドキュメンテーションツールなどに 使われることを想定して作られています。 JavaDocタグの解析を、サポートしています。 Xjavadocの、拡張版のような感じです。 クラス、インタ…
iBATIS用のXdocletプラグインを作成中。 XdocletのTemplate Languageを覚えるのが面倒くさい。 QdoxとVelocityを使えば楽にできそうなのに、 と思ってたら、Xdoclet2で、そうなっていた。 しかし、情報が少なさすぎ。
エンティティに複雑なプロパティを使用する場合。 例えば、列挙型。
Jaxorのサンプル Jaxorをダウンロードする。 http://jaxor.sourceforge.net/ 現在の最新は3.5 今回はOracleを使用する。 SCOTTのEMP表をマッピングしてみる。 今回使用したソース
Jaxor - Model Driven Persistence Jaxor Overview
OracleのPL/SQLを呼んでみる
SqlMapのバインド変数で、$と#の違いについて $XXX$→PreparedStatementの固定文字(そのプロパティの値で置き換わる) #XXX#→PreparedStatementのバインド変数(?に置き換わる) として扱われる。
LazyLoadingを調べたときに、仕組みを少し調べてみた。 iBATISやHibernateは、LazyLoadingを実現するためにCGLIBを使っています。 http://cglib.sourceforge.net/ CGLIBは、Code Generation Libraryの略で、 読んで字のごとく、Javaコード生成ライブラリです…
iBATISでも、LazyLoading機能がある。 LazyLoadingとは、実際にそのクラスをロードするときに、 初めて、インスタンス化されるもの。 iBATISでも、親子関係のレコードを、一度にマッピングしてロードできる。 今回のサンプルでは、 の関係のドメインモデルで…
iBATISに限らず、O/Rマッピングでの問題点。 ネストした、子レコードの自動取得時に、親レコードが複数検索される場合、 ヒットした親レコードの数だけ、子レコードにSELECT文が発行されることが有る。 親レコードが、キー検索のような場合は問題が少ないが…
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を作らないで、iBATISを使ってみる。 ParameterClassにMap、ResultClassにMapを使う。 まぁ、他のO/Rマップツールでもありそうだけど、あえてやってみる。 利用価値あるのか?
iBATISで動的SQLを作成する Hibernateと違い、iBATISの動的SQLはSqlMap定義で指定する。 クエリーパラメータを渡して、その値をiBATISが判別してSQLを生成する。 Javaのプログラム的な部分はないので、XMLを修正すれば、変更できる。 HQLのような、自分でSQL…
■キャッシュ SqlMapConfig.xmlに<settings> Elementを書かないと デフォルトではキャッシュは有効だが有効にならない。 謎。 今回使用したソース マッピングファイルで定義する。 (SqlMapXmlファイル)</settings>
Springを使った、iBATISのサンプル。 環境: Sun j2sdk1.4.2_05 Maven 1.0.2 使い方はテストケースを参照。 #maven test で、必要なライブラリをダウンロードした後、テストを実行します。 HSQLを使用しているので、データベースを用意しなくても実行できま…