当我将Hibernate版本从3.6.8更新到4.0.0时,我在这一行中得到了关于已弃用方法buildSessionFactory()的警告:
private static final SessionFactory sessionFactory =
new Configuration().configure().buildSessionFactory();
Javadoc建议使用另一种方法
buildSessionFactory (ServiceRegistry ServiceRegistry)
但在文档中我发现了弃用的变体
是的,它被弃用了。用下面的代码替换你的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();
是的,它被弃用了。http://docs.jboss.org/hibernate/core/4.0/javadocs/org/hibernate/cfg/Configuration.html#buildSessionFactory()特别告诉您使用您找到的另一个方法(buildSessionFactory(ServiceRegistry ServiceRegistry))—因此使用它。
文档从一个版本复制到另一个版本,可能只是还没有更新(他们不会在每个版本都重写手册)——所以请相信Javadocs。
有关更改的详情,请参阅以下网址:
源代码:https://github.com/hibernate/hibernate-core/commit/0b10334e403cf2b11ee60725cc5619eaafecc00b
门票:https://hibernate.onjira.com/browse/hhh - 5991
其他参考资料:
http://relation.to/Bloggers/HibernateCore40IsFinal
http://relation.to/19942.lace
http://docs.jboss.org/hibernate/core/4.0/devguide/en-US/html/ch07.html#services-registry
http://sourceforge.net/apps/mediawiki/hibernate/index.php?title=Category:Services