Hibernate 的 SessionFactory 是如何创建的?
时间: 2024-09-19 09:11:17 浏览: 70
在 Hibernate 中,SessionFactory 是用于持久化操作的核心组件,它负责管理数据库连接池以及所有的实体映射信息。创建 Hibernate SessionFactory 通常需要经过以下步骤:
1. **加载配置**:首先,在应用程序的初始化阶段,读取 Hibernate 的配置文件,如 `hibernate.cfg.xml` 或者通过 Java API 创建 Configuration 对象。
```java
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
```
2. **定义实体扫描范围**:如果应用中有多个包存放了映射的实体类,可以在配置文件里指定扫描这些包。
```xml
<class-mapper>
<class entity="com.example.MyEntity"/>
</class-mapper>
```
或者在 Java API 里指定:
```java
config.addAnnotatedClass(MyEntity.class);
```
3. **配置SessionFactory**:然后创建 ServiceRegistryBuilder 和 Configuration 实例,并结合它们创建 SessionFactory。
```java
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(config.getProperties())
.build();
SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);
```
4. **打开事务处理**:在每次需要使用 Hibernate 进行操作之前,都需要从 SessionFactory 获取一个新的 Session,这通常在 TransactionManager 控制下完成。
```java
Session session = sessionFactory.openSession();
session.beginTransaction();
// 执行 CRUD 操作
session.getTransaction().commit();
```
5. **清理资源**:当不需要 Hibernate 服务时,记得关闭 Session 和关闭 SessionFactory 来释放资源。
```java
session.close();
serviceRegistry.shutdown();
```
阅读全文