繁体   English   中英

在Hibernate中加载多个带注释的类

[英]Loading multiple annotated classes in Hibernate

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

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

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

另外我在hibernate.cfg.xml找到了一个标签<mapping package="" />起初我以为这会为我做这个工作,但它没有用。 我没有得到这个属性的用途。

注释解析的神奇之处在于创建会话工厂时完成。 Hibernate可以在没有弹簧的情况下完成。 Spring实际上只是包含了hibernate功能。

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

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

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

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);

`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM