原文: https://howtodoinjava.com/hibernate/hibarnate-4-how-to-build-sessionfactory/

如果您一直在观看以前的 Hiberate 版本,那么您一定已经注意到它们已经连续快速弃用了许多类。 不推荐使用的类是AnnotationConfigurationServiceRegistryBuilder。 这些类用于通过 Java 代码以及是否在应用中使用它们来构建会话工厂。 它们可能效果很好,但是您总是会看到一些关于其贬值的恼人警告。

在本教程中,我将给出一个示例,该示例在不使用上述不推荐使用的类的情况下构建 Hiberate SessionFactory。 我正在使用最新的 Hiberate 版本,即 Hibernate 4.3.6.Final,因此您可以确保使用最新的方法来构建会话工厂。

建立SessionFactory时使用的类

我已经使用以下类在 Hiberate 4 中构建SessionFactory

  1. Configuration:代替不建议使用的 AnnotationConfiguration
  2. StandardServiceRegistryBuilder :代替不推荐使用的ServiceRegistryBuilder

如何在 Hibernate 4 中构建SessionFactory

使用下面的示例代码在 hibernate 4 中构建会话工厂。可以根据需要随意调整代码。

  1. package com.howtodoinjava.demo.util;
  2. import org.hibernate.SessionFactory;
  3. import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
  4. import org.hibernate.cfg.Configuration;
  5. import org.hibernate.service.ServiceRegistry;
  6. public class HibernateUtil
  7. {
  8. private static SessionFactory sessionFactory = buildSessionFactory();
  9. private static SessionFactory buildSessionFactory()
  10. {
  11. try
  12. {
  13. if (sessionFactory == null)
  14. {
  15. Configuration configuration = new Configuration().configure(HibernateUtil.class.getResource("/hibernate.cfg.xml"));
  16. StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
  17. serviceRegistryBuilder.applySettings(configuration.getProperties());
  18. ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
  19. sessionFactory = configuration.buildSessionFactory(serviceRegistry);
  20. }
  21. return sessionFactory;
  22. } catch (Throwable ex)
  23. {
  24. System.err.println("Initial SessionFactory creation failed." + ex);
  25. throw new ExceptionInInitializerError(ex);
  26. }
  27. }
  28. public static SessionFactory getSessionFactory()
  29. {
  30. return sessionFactory;
  31. }
  32. public static void shutdown()
  33. {
  34. getSessionFactory().close();
  35. }
  36. }

希望上述信息对从 Hiberate 3 迁移到 Hiberate 4 有所帮助。

祝您学习愉快!