Как получить экземпляр SessionFactoryImplementor? - PullRequest
3 голосов
/ 01 ноября 2010

Как в заголовке: как я могу получить экземпляр SessionFactoryImplementor?В коде я взломал:

SessionFactoryImplementator  sfi
    = (SessionFactoryImplementator) session.getSessionFactory();

Мне это не очень нравится, и мне было интересно, есть ли другой, более изящный способ получения экземпляра разработчика.

Ответы [ 3 ]

3 голосов
/ 01 ноября 2010

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

1 голос
/ 04 июля 2011

Как насчет:

SessionFactoryImplementor sfi = (SessionFactoryImplementor) ctx.getBean("sessionFactory");
0 голосов
/ 14 февраля 2015

После прочтения вышеприведенных комментариев я бы предложил исходный пример кода автора ... SessionFactoryImplementator sfi = (SessionFactoryImplementator) session.getSessionFactory();, а затем последнее перекодирование того же принципала: SessionFactoryImplementor sfi = (SessionFactoryImplementor) ctx.getBean("sessionFactory"); Любой, кто на самом деле использует Spring, ВСЕГДА должен отложитьпоследний подход, поскольку нет способа узнать, как SessionFactoryBean в Spring3 / 4 может выбрать повторную реализацию «openSession» и т. д. (или приложения разработчика), но указывают на то, что доступ к нему через Spring ApplicationContext гарантирует, что у вас будет «самый высокий»-уровень "обернутая версия фактической SessionFactory, которая должна реализовывать наибольшее количество интерфейсов, связанных с Hibernate SessionFactory (независимо от того, обернуты ли они через AoP или ткачество классов во время компиляции и т.только один Hibernate SessionFactory в вашем appCtx, тогда еще лучше будет: appCtx.getBean(org.hibernate.SessionFactory.class);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...