当我将Hibernate版本从3.6.8更新到4.0.0时,我在这一行中得到了关于已弃用方法buildSessionFactory()的警告:
private static final SessionFactory sessionFactory =
new Configuration().configure().buildSessionFactory();
Javadoc建议使用另一种方法
buildSessionFactory (ServiceRegistry ServiceRegistry)
但在文档中我发现了弃用的变体
这里有很多hibernate核心框架中已弃用的api。
我们已经创建了会话工厂,如下所示:
SessionFactory SessionFactory = new Configuration().configure(). buildessionfactory ();
方法buildSessionFactory在hibernate 4发行版中已弃用,并被新的API所取代。如果你使用hibernate 4.3.0及以上版本,你的代码必须是:
配置Configuration = new Configuration().configure();
StandardServiceRegistryBuilder生成器= new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
SessionFactory factory = configuration.buildSessionFactory(builder.build());
从4.3.0开始,类ServiceRegistryBuilder被StandardServiceRegistryBuilder取代。看起来在5.0版本中会有很多变化。但是,对于已弃用的api和适合使用的替代方案仍然没有太多的明确说明。每一个增量版本都会出现更多弃用的API,它们都是为了5.0版本的核心框架进行微调。
是的,它被弃用了。用下面的代码替换你的SessionFactory:
在Hibernate 4.0, 4.1, 4.2
private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;
public static SessionFactory createSessionFactory() {
Configuration configuration = new Configuration();
configuration.configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(
configuration.getProperties()). buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
更新:
在Hibernate 4.3中,ServiceRegistryBuilder已弃用。请使用以下语句。
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
configuration.getProperties()).build();