iBATIS3(mybatis)の environments タグ

iBATIS3(mybatis) のコンフィグレーションファイル、
マニュアルには、紛らわしく、

<environments default="development">
<environment id="development">


と書いてある。

environmentタグ要素を2つ書いて Congiguration のデフォルトを
指定できるということである。
さらに、デフォルト以外のid で指定する enviromentのデータソースが間違っていても、
デフォルトの Enviroment を使用する限り、
エラーにならない。デバッグと本番のデータソース切り替えを
制御できる。

マニュアルやネットで調べて2つ書いてある例を見たことがない。

environmentタグ要素を2つ書く → 2つの DataSource を同時に使用できると予想する。

マニュアルには、こんなコーディングが書いてある

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development",transactionFactory,dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);


では、2つ書いて、environment 名を指定するパターンとデフォルトでの
SqlSessionFactory 生成するところをこれから見直すことを考えることにする。

http://blog.zaq.ne.jp/oboe2uran/article/459/
↑↑↑
これもこれから、SqlSessionFactory インジェクトさせる部分をゆっくり見直すことにする。

とりあえず、2つ environment を書く例は、こんなもの。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
          "">http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
    <environments default="test1">
        <environment id="test1">
            <transactionManager type="JDBC"/>
            <dataSource type="JNDI">
                <property name="data_source" value="java:comp/env/jdbc/test1"/>
            </dataSource>
        </environment>
        <environment id="test2">

            <transactionManager type="JDBC"/>
            <dataSource type="JNDI">
                <property name="data_source" value="java:comp/env/jdbc/test2"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="sql/sqlmap.xml"/>
    </mappers>
</configuration>