【问题标题】:StandardServiceRegistryBuilder and ServiceRegistry in Hibernate FrameworkHibernate 框架中的 StandardServiceRegistryBuilder 和 ServiceRegistry
【发布时间】:2017-09-08 11:29:55
【问题描述】:

我正在尝试使用 Spring 和 Hibernate 框架开发一个简单的 CRUD 应用程序。我正在从 Hibernate Tutorials : CRUD example in hibernate 教程中获得帮助。

在本教程中,有一个单独的类如下,用于创建会话工厂。

package com.hibernatetest.utils;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class SessionManagerUtil {

 private static final SessionFactory sessionFactory = buildSessionFactory();

 private static SessionFactory buildSessionFactory() {

 Configuration config = null;
 StandardServiceRegistryBuilder regBuilder = null;
 ServiceRegistry serviceReg = null;

 try {

 config = new Configuration();
 config.configure("hibernate.cfg.xml");

 regBuilder = new StandardServiceRegistryBuilder();
 regBuilder.applySettings(config.getProperties());

 serviceReg = regBuilder.build();

 return config.buildSessionFactory(serviceReg);

 } catch (Exception e) {
 throw new ExceptionInInitializerError(e.getMessage());
 }

 }

 public static SessionFactory getSessionFactory() {
 return sessionFactory;
 }
}

但我不明白为什么在这里使用以下内容,它们的目的是什么。

StandardServiceRegistryBuilder regBuilder = null;
ServiceRegistry serviceReg = null;

如果你能在上面解释一下,那对我更好地理解它真的很有帮助。

【问题讨论】:

  • 你的问题是什么?它们是休眠 api。

标签: hibernate


【解决方案1】:
StandardServiceRegistryBuilder regBuilder ;
ServiceRegistry serviceReg ;

如果你这样写,它会显示编译时错误。它们没有被初始化,只是被声明了,你可能认为它们可以在 try 中初始化,因为你在 try 块中使用它们。如果在初始化语句之前的 try 块中有任何异常,它会转到 catch 块。处理异常后,将执行catch块之后的now语句,catch之后可能会使用这两个引用,因为没有初始化我们不能使用它们,JVM会识别这类问题并在编译时显示错误本身.这就是他们使用空引用初始化的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 2012-11-01
    • 2021-09-03
    • 2014-02-02
    • 2020-04-26
    • 2023-01-19
    • 2011-03-20
    • 2011-06-21
    相关资源
    最近更新 更多