atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
n-3104の備忘録
  • 広告なしオファー
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
広告非表示(β版)
ページ一覧
n-3104の備忘録
  • 広告なしオファー
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
n-3104の備忘録
広告非表示 広告非表示(β)版 ページ検索 ページ検索 メニュー メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • n-3104の備忘録
  • Java
  • iBATIS

n-3104の備忘録

iBATIS

最終更新:2008年01月30日 11:50

n-3104

- view
管理者のみ編集可
  • 前提
  • 特徴
  • とりあえず使ってみる
    • iBATIS SQL Maps チュートリアル For SQL Maps Version 2.0 February 18, 2006
    • ibatis-2.3.0.677.zipに付属のsimple_example
    • トランザクション
    • iBATIS-SqlMaps-2_ja.pdf
  • Abator
    • 概要
    • Eclipseプラグイン
      • インストール手順
      • 使い方

前提

  • ibatis-2.3.0.677.zip
  • j2sdk1.4.2_11
  • Microsoft SQL Server 2000
  • Eclipse SDK バージョン: 3.1.1
  • Abator code generator for iBATIS 1.0.0

特徴

SQL文を記述するO/Rマッピングフレームワーク。参照系SQLの検索結果とJavaBeansのマッピングを設定ファイルで行うことが出来きる。SQLを直接記述できるためチューニングが容易であるが、特定のDBに依存してしまう。

  • SQL文を外部ファイルで管理できる。
  • 動的SQL用の独自の構文をサポートしている。
  • 検索結果のJavaBeansのキャッシュ機能がある。
  • あるBeanのプロパティのBeanについてもまとめて検索できる。この際の方法は以下の2通り。
    • 遅延ローディング
    • join

とりあえず使ってみる

iBATIS SQL Maps チュートリアル For SQL Maps Version 2.0 February 18, 2006

iBATISのサイトで配布されている「iBATIS-SqlMaps-2-Tutorial_ja.pdf」を参考にとりあえず動かしてみようとした。だが、チュートリアルの時点で以下の点で誤植(?)があった。
  • クラス名は MyAppSqlConfig だが使用例では MyAppSqlMapConfig で、Mapが増えている。
  • MyAppSqlConfig の resource の値が com/ibatis/example/sqlMap-config.xml となっているが、それまで紹介されたものは examples/sqlmap/maps/SqlMapConfigExample.xml である。

しかも、SQLServer2000の場合は、JDBCドライバのコネクションURLに SelectMethod=Cursor を追加する必要があり、これに気付かず1時間近く嵌ってしまった。まぁ、これもiBATIS-SqlMaps-2_ja.pdfに明記されてはいたが。
http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B313181

そして、setBirthDate(null)にするとエラーとなってしまう。newPerson.setBirthDate(new java.sql.Date(new Date().getTime()))とかすればエラーにはならなかったが。

    Person newPerson = new Person();
    newPerson.setId(12); // you would normally get the ID from a sequence or custom table
//  newPerson.setBirthDate(null);
    newPerson.setBirthDate(new java.sql.Date(new Date().getTime()));

null を指定できるようにするには、xmlファイルにおいてjdbcTypeを指定する必要がある。前述のガイドでも触れられているが、null値を指定する場合はjdbcTypeを明示的に指定しないとエラーになる場合があるらしい。具体的にはPerson.xmlのinsertPersonにおいてbirthDateにjdbcTypeとしてDATEを追加すればよい。

#birthDate# → #birthDate:DATE#

ibatis-2.3.0.677.zipに付属のsimple_example

チュートリアルがうまく動かなかったので、zipファイルに付属している使用例を使ってみようとしたが、Account.xmlの insertAccount で values の前に ')' がついていなかった。。

トランザクション

SqlMapClient+startTransaction をしなければ、オートコミットの挙動になった。以下のソースでstartTransactionメソッドを呼ばなければ、insertについてもコミットされていた

    SqlMapClient sqlMap = MyAppSqlMapConfig.getSqlMapInstance();

    sqlMap.startTransaction(); // トランザクションの開始

    Person person = new Person();
    ...
    sqlMap.delete ("deletePerson", person);
    sqlMap.commitTransaction(); // この時点で一旦コミット

    sqlMap.insert("insertPerson", person);
    sqlMap.endTransaction(); // insertについてはロールバックされる

また、dataSourceのJDBC.DefaultAutoCommitプロパティの値はstartTransactionでトランザクションを開始した場合には有効であるが、開始していない場合は無視された。

<transactionManager type="JDBC" >
    <dataSource type="SIMPLE">
        <property name="JDBC.Driver" value="${driver}"/>
        <property name="JDBC.ConnectionURL" value="${url}"/>
        <property name="JDBC.Username" value="${username}"/>
        <property name="JDBC.Password" value="${password}"/>
        <property name="JDBC.DefaultAutoCommit" value="false"/>
    </dataSource>
</transactionManager>

iBATIS-SqlMaps-2_ja.pdf

短いが、非常に良くまとまっている。不明点があれば参照すべきガイドである。

Abator

概要

iBATIS用の設定ファイルとソースコードを自動生成してくれるツール。Eclipse用のプラグインも存在する。

Eclipseプラグイン

インストール手順

http://ibatis.apache.org/abator.html を参照。更新アクセス先サイトを追加するだけで簡単に追加できる。

使い方

新規メニューの中に "Abator For iBATIS Configuration File" が追加されるので、それをクリックすると abatorConfig.xml の雛形が生成される。この中身を適切に設定すれば自動生成できる。

abatorConfig.xml
<abatorConfiguration>
  <abatorContext>    
    <jdbcConnection driverClass="com.microsoft.jdbc.sqlserver.SQLServerDriver"
        connectionURL="jdbc:microsoft:sqlserver://localhost:1433;databaseName=test;SelectMethod=Cursor"
        userId="???"
        password="???">
      <classPathEntry location="C:/workspace/iBatis/msbase.jar" />
      <classPathEntry location="C:/workspace/iBatis/mssqlserver.jar" />
      <classPathEntry location="C:/workspace/iBatis/msutil.jar" />
    </jdbcConnection>

    <javaModelGenerator targetPackage="hoge.bean" targetProject="iBatis/src" />
    <sqlMapGenerator targetPackage="hoge.map" targetProject="iBatis/src" />
    <daoGenerator type="IBATIS" targetPackage="hoge.dao" targetProject="iBatis/src" />

    <table tableName="PERSON"/>

  </abatorContext>
</abatorConfiguration>

ポイントは以下の通り。細かい情報は http://ibatis.apache.org/docs/tools/abator/ を参照。
  • classPathEntryは絶対パスが無難
  • targetProjectはEclipseのプロジェクト名+ソースフォルダ名
  • tableにschema属性をつけたらうまく動かなかった。

また、生成されたDAOは iBATIS DAO framework を前提としているためコンパイルエラーになる。iBATISは 2.3 から DAO framework 廃止し、Spring framework に移行することを推奨しているが、Abatorはまだ対応していないようだ。
「iBATIS」をウィキ内検索
LINE
シェア
Tweet
n-3104の備忘録
記事メニュー
更新履歴
取得中です。
記事メニュー2
合計: -
今日: -
昨日: -


戻る


blog
バックアップ
人気記事ランキング
  1. Java/Eclipse
もっと見る
最近更新されたページ
  • 5626日前

    トップページ
  • 5876日前

    Java/Seaser
  • 5876日前

    Java/Spring
  • 5876日前

    Java
  • 5876日前

    Java/Eclipse
  • 5881日前

    読書
  • 5881日前

    日記
  • 5894日前

    学習記録
  • 5920日前

    メモ
  • 5936日前

    misc/ネットワーク
もっと見る
人気記事ランキング
  1. Java/Eclipse
もっと見る
最近更新されたページ
  • 5626日前

    トップページ
  • 5876日前

    Java/Seaser
  • 5876日前

    Java/Spring
  • 5876日前

    Java
  • 5876日前

    Java/Eclipse
  • 5881日前

    読書
  • 5881日前

    日記
  • 5894日前

    学習記録
  • 5920日前

    メモ
  • 5936日前

    misc/ネットワーク
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. フォートナイト攻略Wiki
  2. デジタルモンスター まとめ@ ウィキ
  3. 発車メロディーwiki
  4. 首都圏駅メロwiki
  5. 駅のスピーカーwiki
  6. マージマンション@wiki
  7. 作画@wiki
  8. Fate/Grand Order @wiki 【FGO】
  9. トリコ総合データベース
  10. 機動戦士ガンダム ギレンの野望 アクシズの脅威V 攻略wiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ゲームカタログ@Wiki ~名作からクソゲーまで~
  3. 初音ミク Wiki
  4. ストグラ まとめ @ウィキ
  5. MADTOWNGTAまとめwiki
  6. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  7. 検索してはいけない言葉 @ ウィキ
  8. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  9. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  10. 英傑大戦wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MADTOWNGTAまとめwiki
  2. MadTown GTA (Beta) まとめウィキ
  3. 首都圏駅メロwiki
  4. まどドラ攻略wiki
  5. Last Z: Survival Shooter @ ウィキ
  6. フォートナイト攻略Wiki
  7. 駅のスピーカーwiki
  8. ちいぽけ攻略
  9. ソニックレーシング クロスワールド 攻略@ ウィキ
  10. 戦国ダイナスティ攻略Wiki@ウィキ
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 【移転】Miss AV 見れない Missav.wsが見れない?!MissAV新URLはどこ?閉鎖・終了してない?missav.ai元気玉って何? - ホワイトハッカー研究所
  2. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  3. XVI - MADTOWNGTAまとめwiki
  4. 参加者一覧 - MADTOWNGTAまとめwiki
  5. 参加者一覧 - ストグラ まとめ @ウィキ
  6. ブラック・マジシャン・ガール - アニヲタWiki(仮)
  7. コメント/雑談・質問 - マージマンション@wiki
  8. Pokémon LEGENDS Z-A - アニヲタWiki(仮)
  9. ハーディガン - 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  10. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.