我正在尝试将Hibernate 4仅用于注释和一个hibernate.cfg.xml文件。我做了自己的注释,并使用反射将其添加到配置中。我可以用这种方式很好地使用Hibernate 4,但是我的配置是使用不推荐使用的方法构建的。
hibernate.cfg.xml
final Configuration configuration = new Configuration(); final Reflections reflections = new Reflections(Item.class.getPackage().getName()); final Set<Class<?>> classes = reflections.getTypesAnnotatedWith(Entity.class); for (final Class<?> clazz : classes) { configuration.addAnnotatedClass(clazz); } return configuration.configure().buildSessionFactory();
(不建议使用的代码:)buildSessionFactory();。
buildSessionFactory();
甚至hibernate 4文档也显示以这种方式构建配置。
如果我尝试使用新方法(buildSessionFactory(ServiceRegistry),则不会得到相同的结果,并且似乎很多不必要的代码可以完全执行不推荐使用的方法。但是,我不想继续使用此样式,因为无论如何我都不喜欢使用不赞成使用的代码。
buildSessionFactory(ServiceRegistry)
我的问题是: 如何以上述方式仅通过配置文件正确配置Hibernate 4?我似乎只会造成错误并面临不必要的困难。
修改后的代码如下所示:
final Configuration configuration = new Configuration(); final Reflections reflections = new Reflections(Item.class.getPackage().getName()); final Set<Class<?>> classes = reflections.getTypesAnnotatedWith(Entity.class); for (final Class<?> clazz : classes) { configuration.addAnnotatedClass(clazz); } ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings (configuration.getProperties()).buildServiceRegistry(); return configuration.buildSessionFactory(serviceRegistry);
您可以检查以下链接以获取信息:HHH-6183和HHH-2578。