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