簡體   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