我正在尝试使用Spring和Hibernate框架开发一个简单的CRUD应用程序。我正在接受Hibernate Tutorials : CRUD example in hibernate教程的帮助。
在本教程中,有一个单独的类,用于创建会话工厂。
class WebViewChatDataOutputView(generics.RetrieveAPIView):
lookup_field = 'chat_id'
queryset = Chat.objects.all()
serializer_class = ChatSerializer
但我不明白为什么在这里使用以下内容,他们的目的是什么。
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;
}
}
如果你能解释一下,那对我来说真的很有帮助。
答案 0 :(得分:0)
StandardServiceRegistryBuilder regBuilder ;
ServiceRegistry serviceReg ;
如果你这样写,它将显示编译时错误。它们没有初始化,只是它们被声明,你可能认为它们可以在try中初始化,因为你在try块中使用它们。如果在初始化语句之前try块中有任何异常,则它将进入catch块。在处理异常之后,现在catch块执行后的语句,可能有一些机会在catch之后使用这两个引用,因为没有初始化我们不能使用它们,JVM识别这些问题并在编译时显示错误本身。这就是他们用null引用初始化的原因。