Библиотека для настройки Hibernate, которая допускает экземпляры ключевых интерфейсов, а не просто имена классов и свойства или строку - PullRequest
1 голос
/ 31 января 2011

Мне очень не нравится, что Hibernate не позволяет просто установить TransactionManager или CacheProvider и все другие важные интерфейсы в конфигурации. Вместо этого у этого есть варианты, такие как передача имени класса или имени класса поиску или поставщику. Опять же, просто невозможно передать экземпляр напрямую, и нужно использовать такие хаки, как установка локального потока, установка имени некоторого локатора класса и обратное считывание локального потока. Уродливые противные и т. Д. И т. Д. Конечно, кто-то все это очистил, поэтому я спрашиваю q.

RANT

Подумайте, насколько проще было бы объекты Config, если бы можно было просто установить, класс Configuration больше не будет иметь десятки и десятки свойств String и будет легко вводиться.

  • бассейн
  • поиск менеджера транзакций
  • поставщик кеша
  • источник данных

Простота

Написание новых провайдеров стало бы намного проще, и больше не нужно было бы заново изобретать протокол для чтения конфигурации из строки (строк) и адаптера. При правильном внедрении зависимостей нужно будет только написать последний

РАБОЧЕЕ РЕШЕНИЕ Я начал работу с подклассификации некоторых классов Hibernate, чтобы я мог заменить значение по умолчанию экземпляром или оболочкой.

  • Конфигурация - необходимо создать подкласс, который принимает SessionFactory, поскольку ctor, принимающий SessionFactory, защищен. Другие методы не затрагиваются.
  • SettingsFactory - переопределить ключевые методы для возврата экземпляра.

и т.д.

пишу свой собственный SessionFactory

...