пятница, 8 ноября 2013 г.

MyBatis области видимости базовых понятий (SqlSessionFactoryBuilder, SqlSessionFactory и т.п.)

SqlSessionFactoryBuilder 
Должен создаваться единожды за все время работы приложения и только для того, чтобы создать SqlSessionFactory. Поэтому область использования данного объекта  - метод. Категорически не рекомендуется использовать  SqlSessionFactoryBuilder  для создания множества SqlSessionFactory.

SqlSessionFactory 
Создается 1 экземпляр на все приложение и используется на протяжении всего времени выполнения приложения. Лучше всего использовать область видимости - приложение. Самый простой способ использовать паттерн Singleton. Или же использовать механизм Dependency Injection, для создания объекта singleton за счет контейнера Spring.

SqlSession 
Каждый поток должен иметь свой экземпляр, поэтому область использования должна быть - метод. Экземпляр  SqlSession нельзя использовать совместно и он не является потокобезопасным. Ни за что в жизни нельзя хранить ссылку на него в статической переменной или переменной класса.
Очень важно всегда закрывать сессию после использования.

SqlSession session = sqlSessionFactory.openSession(); 
try { 
  // do work 
} finally { 
  session.close(); 


Mapper Instances 
Область использования должна быть такая же как и у SqlSession, то есть область использования д.б. - метод.


Комментариев нет:

Отправить комментарий