2010年10月18日月曜日

【備忘録】iBatis.netで任意の場所に配置されているSqlMap.configを指定する方法その2 -こっちのほうが良いみたい-

頑張って英語のマニュアルを読んだら書いてあった。

http://code.google.com/p/mybatisnet/downloads/detail?name=Doc-DataMapper-1.6.2.zip&can=3&q=datamapper+docs
↑このマニュアルの73~75ページ

public class Mapper
{
    private static volatile ISqlMapper _mapper = null;
    protected static void Configure(Object obj)
    {
        _mapper = null;

    }

    protected static void InitMapper()

    {

        ConfigureHandler handler = new ConfigureHandler(Configure);

        DomSqlMapBuilder builder = new DomSqlMapBuilder();

        _mapper = builder.ConfigureAndWatch("SqlMap.configのパス", handler);

    }

    public static ISqlMapper Instance()

    {

        if (_mapper == null)

        {

            lock (typeof(SqlMapper))

            {

                if (_mapper == null)

                {

                    InitMapper();

                }

            }

        }

        return _mapper;

    }

    public static ISqlMapper Get()

    {

        return Instance();

    }

}
C#4.0 (Visual Studio 2010)
iBatis.DataMapper 1.6.2

builder.ConfigureAndWatch()というメソッドが、SqlMap.Configの変更を監視し、
変更が無ければ前回作成したインスタンスを再利用するようだ。

なるほど、こっちのやり方のほうが安心。

上記サンプルクラスを使えば、Mapper.Instance()というように、
従来通りMapperにアクセスできるという寸法だね。

やっぱり面倒臭がらずにマニュアルは読むべきだな…。

0 件のコメント:

コメントを投稿