ServiceRegistry
接口与服务的概念有关(对于 Hibernate 4 来说是新的)。服务是为 Hibernate 提供各种功能并且用户可以插入替代实现的类。有关详细信息,请参阅此 wiki 页面。
你是对的,buildSessionFactory()
在 Hibernate 的Configuration
类中不推荐使用 method 来支持 method buildSessionFactory(ServiceRegistry serviceRegistry)
。在纯 Hibernate 的环境(没有 Spring)中,假设您将以ServiceRegistry
这样的方式初始化实例:
private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;
private static SessionFactory configureSessionFactory() throws HibernateException {
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
但到现在,不推荐使用的方法buildSessionFactory()
也ServiceRegistry
为您执行相同的初始化。
Spring 的LocalSessionFactoryBuilder
类只是 Hibernate 的Configuration
类的扩展。但是由于 Spring 的所有特定工作都是在覆盖方法中完成的,LocalSessionFactoryBuilder.buildSessionFactory()
因此您不能buildSessionFactory(ServiceRegistry serviceRegistry)
在 Spring 的环境中使用方法。没什么,因为可以使用buildSessionFactory()
它做完全相同的工作。所以让我们在AppConfig
with中注解该方法,@SuppressWarnings("deprecation")
并耐心等待 Spring 提供与 Hibernate 4 的更好集成。