ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Hibernate 4:如何构建`SessionFactory` > 原文: [https://howtodoinjava.com/hibernate/hibarnate-4-how-to-build-sessionfactory/](https://howtodoinjava.com/hibernate/hibarnate-4-how-to-build-sessionfactory/) 如果您一直在观看以前的 Hiberate 版本,那么您一定已经注意到它们已经连续快速弃用了许多类。 **不推荐使用的类是`AnnotationConfiguration`,`ServiceRegistryBuilder`等**。 这些类用于通过 Java 代码以及是否在应用中使用它们来构建会话工厂。 它们可能效果很好,但是您总是会看到一些关于其贬值的恼人警告。 在本教程中,我将给出一个**示例**,该示例在不使用上述不推荐使用的类的情况下构建 Hiberate `SessionFactory`。 我正在使用最新的 Hiberate 版本,即 [**Hibernate 4.3.6.Final**](http://hibernate.org/orm/downloads/ "hibernate latest version"),因此您可以确保使用最新的方法来构建会话工厂。 ## 建立`SessionFactory`时使用的类 我已经使用以下类在 Hiberate 4 中构建`SessionFactory`。 1. **`Configuration`**:代替不建议使用的 `AnnotationConfiguration` 2. **`StandardServiceRegistryBuilder`** :代替不推荐使用的`ServiceRegistryBuilder` ## 如何在 Hibernate 4 中构建`SessionFactory` 使用下面的示例代码在 hibernate 4 中构建会话工厂。可以根据需要随意调整代码。 ```java package com.howtodoinjava.demo.util; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; public class HibernateUtil { private static SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { if (sessionFactory == null) { Configuration configuration = new Configuration().configure(HibernateUtil.class.getResource("/hibernate.cfg.xml")); StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder(); serviceRegistryBuilder.applySettings(configuration.getProperties()); ServiceRegistry serviceRegistry = serviceRegistryBuilder.build(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } return sessionFactory; } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static void shutdown() { getSessionFactory().close(); } } ``` 希望上述信息对**从 Hiberate 3 迁移到 Hiberate 4** 有所帮助。 **祝您学习愉快!**