[英]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.