Hibernate 4注释配置

时间:2012-08-10 03:48:51

标签: java hibernate hibernate-annotations hibernate-4.x hibernate.cfg.xml

我正在尝试仅使用带注释的Hibernate 4和hibernate.cfg.xml文件。我已经制作了自己的注释,并使用反射将其添加到配置中。我能够以这种方式使用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);
}
return configuration.configure().buildSessionFactory();

(不推荐的代码:buildSessionFactory();)。

即使是hibernate 4文档也显示以这种方式构建配置。

如果我尝试使用新方法(buildSessionFactory(ServiceRegistry),我得不到相同的结果,并且似乎有很多不必要的代码可以完全按照已弃用的方法执行。但是,我不喜欢我不想继续使用这种风格,因为我不喜欢使用弃用的代码。

我的问题是:如何以上述方式从配置文件中正确配置Hibernate 4?我似乎只是导致错误&amp;面对不必要的困难。

1 个答案:

答案 0 :(得分:9)

修改后的代码如下所示: -

  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-6183HHH-2578