【问题标题】:Loading multiple annotated classes in Hibernate在 Hibernate 中加载多个带注释的类
【发布时间】:2012-09-08 22:53:52
【问题描述】:

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

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

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

我还在hibernate.cfg.xml<mapping package="" /> 中找到了一个标签,起初我以为这对我有用,但它没有用。没搞懂这个属性有什么用。

【问题讨论】:

    标签: java hibernate hibernate-annotations


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 有什么用?
    【解决方案2】:

    1,参考: How to get all classes names in a package?

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

    `

    【讨论】:

      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多