当我将Hibernate版本从3.6.8更新到4.0.0时,我在这一行中得到了关于已弃用方法buildSessionFactory()的警告:
private static final SessionFactory sessionFactory =
new Configuration().configure().buildSessionFactory();
Javadoc建议使用另一种方法
buildSessionFactory (ServiceRegistry ServiceRegistry)
但在文档中我发现了弃用的变体
是的,它被弃用了。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
我编辑了上面batbaatar创建的方法,使它接受Configuration对象作为参数:
public static SessionFactory createSessionFactory(Configuration configuration) {
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
configuration.getProperties()).build();
factory = configuration.buildSessionFactory(serviceRegistry);
return factory;
}
在主课程中,我做了:
private static SessionFactory factory;
private static Configuration configuration
...
configuration = new Configuration();
configuration.configure().addAnnotatedClass(Employee.class);
// Other configurations, then
factory = createSessionFactory(configuration);