5

我正在使用休眠注释,为此hibernate.cfg.xml我需要添加这样的带注释的类, <mapping class="p.Customer" />这里p是包名称,客户是带注释的 bean。

假设我有 20 个此类带注释的类,这意味着我必须为该类编写 20 条映射线。在 Spring 中有一个属性packageToScan可用于注册/加载指定包中的所有休眠注释类。

由于我没有使用 Spring,我们可以在 Hibernate 中拥有相同的功能吗?

我也发现了一个标签hibernate.cfg.xml <mapping package="" />,起初我认为这对我有用,但它没有用。我不明白这个属性有什么用。

4

2 回答 2

1

注释解析的魔力是在创建会话工厂时完成的。Hibernate 可以在没有弹簧的情况下做到这一点。Spring 实际上只是包装了休眠功能。

请看这篇文章:http ://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-overview

他们展示了如何在会话工厂中注册类,因此使用了注释。它们确实不提供扫描功能,但您可以自己实现它或更好地使用其他包。我出于类似目的使用了“reflections”包。我的意思是我使用反射包扫描了我的类路径以根据我的标准定位类。我没有将它用于休眠,但我相信这是可能的。

这是可以帮助您的参考。 http://code.google.com/p/reflections/

于 2012-09-16T13:58:28.620 回答
0

1、参考: 如何获取包中的所有类名?

2、扩展org.hibernate.cfg.Configuration

`

package com.hw.configuration;

import com.hw.util.ClassFinder;
import org.hibernate.MappingException;
import org.hibernate.cfg.Configuration;

import java.util.List;

/**
 * Created by whuanghkl on 17/5/31.
 */
public class WildCardConfiguration extends Configuration {

    @Override
    public Configuration addPackage(String packageName) throws MappingException {
        List<Class<?>> classes = ClassFinder.find(packageName);
        int size=classes.size();
        for (int i=0;i<size;i++){
            super.addAnnotatedClass(classes.get(i));
        }
        return this;
    }
}

`

3、`

new SchemaExport(new
                 WildCardConfiguration().configure()).create(true, false);

`

于 2017-05-31T03:04:38.193 回答