簡體   English   中英

hibernate 4.3.x - 加載所有實體注釋類

[英]hibernate 4.3.x - load all entity annotated classes

在我工作的項目中,我不使用Spring,我只使用Hibernate。 我不想將hbm.xml文件用於實體映射/描述/等。 我只想使用注釋。

如何告訴Hibernate從某些軟件包加載所有Entity/Table注釋類?

我在網上搜索但我沒有運氣。 另外,我找不到有關最新Hibernate版本的信息(主要是過時的文章/帖子等)。

編輯1:

http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#mapping

hibernate doc頁面說明了這一點:

對象/關系映射可以用三種方法定義:
1)使用Java 5注釋(通過Java Persistence 2注釋)
2)使用JPA 2 XML部署描述符(在第XXX章中描述)
3)使用稱為hbm.xml的Hibernate遺留XML文件方法

就這樣,我只想使用1)與SessionFactory / Session Hibernate API。

編輯2:

即使我的問題被標記為重復,但事實並非如此,因為我不想使用JPA(以及隱含的描述符),而只是使用上面列出的那些方法1)。

好吧,這在Hibernate 4.3.x中是不可能的,而且似乎永遠不可能。

另見這個問題/答案(盡管這篇文章很老,但它非常有效):
通過在某個包中添加所有類,在Hibernate中添加帶注釋的類。 JAVA

1)在我對此做了一些研究之后,似乎是一種常見的誤解,即Configuration.addPackage允許我們從給定的包中加載所有實體類。 這不是真的。 通過查看hibernate源我發現它很難,然后才發現上面的SO問題/答案證實了這一點。 事實上,我不太確定addPackage是做什么的,但它對我的情況似乎沒有用。

2)似乎我們可以做的一件事是為我們自己的每個注釋實體類調用Configuration.addAnnotatedClass ,例如通過在編譯時對這些類進行硬編碼。 或者......或者通過使用ReflectionsGuava,我們可以在運行時動態地從給定包中找到所有(即我們自己的)實體類,循環它們,並仍然調用Configuration.addAnnotatedClass Reflection的唯一問題是它帶有很多自己的依賴。 因此,如果我們決定使用Reflections,我們必須為這個簡單的事情添加9個新的JAR(多么痛苦)。 使用番石榴它更容易,我們可以打電話
ClassPath.from ( Thread.currentThread().getContextClassLoader() ). getTopLevelClasses(pckg) ClassPath.from ( Thread.currentThread().getContextClassLoader() ). getTopLevelClasses(pckg)

如果有人有更好的方法 - 隨時提供它。
我會接受最好的答案,不一定是我的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM