我正在開發一個基於Java/Spring/Hibernate的Web應用程序,在Eclipse中開發。如何外部化Hibernate實體?
這個web應用程序實際上是兩個不同的項目,它們複製一對Hibernate實體類以及它們各自的Hibernate存儲庫類。顯然,採用重複代碼並將其移入外部JAR文件或其他內容會很好。
從Hibernate文檔中,我知道我應該把實體類放在一個包含persistence.xml
文件的新JAVA項目中。我也知道我可以將這個項目導出到JAR中,並將其包含在我的主要項目的類路徑中。此外,我知道我應該從我的主項目中的hibernate.cfg.xml
引用此JAR。
出於某種原因,我現在正在處理的項目似乎並不那麼簡單。
這裏有幾個問題:
- 我持有的共享代碼外部項目
,我可以包括休眠倉儲類是它嗎?在
persistence.xml
中應該如何注意,如果確實需要它的話? 在我的外部JAR中,
persistence.xml
的最小值是多少?例如,主項目已經配置了休眠方言,所以我可以不用這個外部JAR的persistence.xml
?從Hibernate文檔中,我知道我可以使用我的
hibernate.cfg.xml
中的<jar-file>
標記引用我的外部JAR文件。那麼,如果我的項目沒有hibernate.cfg.xml
?我們有一個Spring配置xml,它給org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
一個annotatedClasses
屬性。我沒有找到運用AnnotationSessionFactoryBean
引用外部JAR文件的例子。
我試過在這個網站上搜索,但還沒有找到任何類似的東西來幫助我。道歉,如果這是一個重複的職位,或一個愚蠢的明顯問題或某事。
感謝提前:)
編輯:
OK,所以它看起來像什麼,我最終需要知道的是,假設我已經包括在我的類路徑"MY_TEST.jar"
,並進一步假設"MY_TEST.jar"
有一個註釋休眠類:src.shared.myEntity.java
我將如何去引用這個實體類與下面的Spring配置摘錄? (無論我嘗試什麼,幾乎總是得到IllegalArgumentException: Cannot find class
)
<bean id="my.postgres.sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource"
ref="my.postgres.dataSource" />
<property name="annotatedClasses">
<list>
<value>src.app.EntityA</value>
<value>src.app.EntityB</value>
</list>
</property>
.........
</bean>
嘿,感謝您的快速響應!對不起,我關於存儲庫的事情錯過了。 我在我的類路徑中有我的外部jar,但我在使用Spring配置中的AnnotationSessionFactoryBean屬性引用它時遇到了問題。同樣,Hibernate文檔給出了一個如何用hibernate.cfg.xml文件完成的清晰示例,但原始項目架構師決定不包含這個,而是通過Spring的配置來配置所有內容。一切都在編譯,但是spring找不到我的外部實體類 – Langecrew
然後向我們展示您遇到問題的彈簧配置,並告訴我們發生了哪種異常(堆棧跟蹤)。但春天也不在乎罐子。如果某個類在類路徑中,它會找到它。 –
發表在我原來的帖子的編輯 – Langecrew