Когда я обновил версию Hibernate с 3.6.8 до 4.0.0, я получил предупреждение об устаревшем методе buildSessionFactory()
в этой строке:
private static final SessionFactory sessionFactory =
new Configuration().configure().buildSessionFactory();
Javadoc рекомендует использовать другой метод
buildSessionFactory(ServiceRegistry serviceRegistry)
но в документации я нашел устаревший вариант :(
Можете ли вы помочь мне с этим небольшим недоразумением?
java
hibernate
configuration
deprecated
bootstrapping
pushistic
источник
источник
Ответы:
Да, это не рекомендуется. Замените ваш SessionFactory следующим:
В Hibernate 4.0, 4.1, 4.2
В Hibernate 4.3 ServiceRegistryBuilder устарела . Вместо этого используйте следующее.
источник
Да, это устарело. http://docs.jboss.org/hibernate/core/4.0/javadocs/org/hibernate/cfg/Configuration.html#buildSessionFactory () специально предлагает вам использовать другой метод, который вы нашли вместо (
buildSessionFactory(ServiceRegistry serviceRegistry)
) - так что используйте его.Документация копируется от выпуска к выпуску и, вероятно, просто еще не была обновлена (они не переписывают руководство с каждым выпуском) - так что доверяйте Javadocs.
Особенности этого изменения можно посмотреть по адресу:
Некоторые дополнительные ссылки:
источник
или
источник
Код проверен для работы в Hibernate 4.3.0. Обратите внимание, что вы можете удалить параметр имени файла XML или указать свой собственный путь к нему. Это похоже на (но опечатки исправлены) другие сообщения здесь, но этот является правильным.
источник
Это так просто: документы JBoss не на 100% в хорошем состоянии. Иди с , что говорит JavaDoc :
buildSessionFactory(ServiceRegistry serviceRegistry)
.источник
Лучший способ создания объекта SessionFactory в последнем выпуске hibernate 4.3.0 и последующих версиях заключается в следующем:
источник
Нередко можно найти несоответствия между разными версиями документации. Большинство разработчиков рассматривают документацию как рутинную работу и откладывают ее.
Как правило, если Javadoc говорит одно, а некоторая документация, не относящаяся к Javadoc, противоречит этому, есть вероятность, что Javadoc является более точным. Программисты, скорее всего, будут поддерживать Javadoc в курсе изменений в коде ... потому что "источник" для Javadoc находится в том же файле, что и код.
В случае
@deprecated
тегов, это виртуальная уверенность, что Javadoc является более точным. Разработчики осуждают вещи после тщательного рассмотрения ... и (вообще говоря) они не обесценивают их.источник
System.getenv(String)
bugs.sun.com/bugdatabase/view_bug.do?bug_id=4199068Configuration.buildSessionFactory()
;)Если вы используете Hibernate 5.2 и выше, вы можете использовать это:
источник
TL; DR
Да, это так. Есть более эффективные способы загрузки Hibernate, например, следующие.
Hibernate-родной бутстрап
Унаследованный
Configuration
объект менее мощный, чем при использованииBootstrapServiceRegistryBuilder
, появившегося после Hibernate 4:JPA начальная загрузка
Вы также можете загрузить Hibernate, используя JPA:
Таким образом, вы строите
EntityManagerFactory
вместоSessionFactory
. Тем не менее, он такжеSessionFactory
расширяетEntityManagerFactory, so the actual object that's built is a
SessionFactoryImpl`.Вывод
Эти два метода начальной загрузки влияют на поведение Hibernate. При использовании встроенного загрузчика Hibernate ведет себя в устаревшем режиме, предшествующем JPA.
При начальной загрузке с использованием JPA Hibernate будет вести себя в соответствии со спецификацией JPA.
Есть несколько различий между этими двумя режимами:
EntityNotFoundException
, поэтому требует проверки БД.источник
источник
StandardServiceRegistryBuilder
НЕ устарела.public void sampleConnection () вызывает исключение {
источник
Я отредактировал метод, созданный batbaatar выше, чтобы он принимал объект конфигурации в качестве параметра:
В основном классе я сделал:
источник
В Hibernate 4.2.2
источник
источник
здесь много API-интерфейсов, которые устарели в структуре ядра Hibernate.
мы создали фабрику сессий, как показано ниже:
SessionFactory sessionFactory = новая конфигурация (). Configure (). BuildSessionFactory ();
Метод buildSessionFactory устарел в выпуске hibernate 4 и заменен новым API. Если вы используете Hibernate 4.3.0 и выше, ваш код должен быть:
Конфигурация конфигурации = новая конфигурация (). Configure ();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder (). ApplySettings (configuration.getProperties ());
SessionFactory factory = configuration.buildSessionFactory (builder.build ());
Класс ServiceRegistryBuilder заменен StandardServiceRegistryBuilder с 4.3.0. Похоже, в версии 5.0 будет много изменений. Тем не менее, нет особой ясности в отношении устаревших API и подходящих альтернатив для использования. Каждый инкрементный выпуск выпускается с более устаревшим API, они служат для тонкой настройки базовой платформы для выпуска 5.0.
источник
В
hibernate 5.3.1
, вы можете попробовать это:источник
Если кто-нибудь здесь после обновления до 5.1 вот как это работает
вместо ниже в спящем 4.3
источник
Просто импортируйте следующий пакет,
источник