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>