2010-10-27 47 views
2

我有一個項目運行幾年,它使用普通的JDBC。plain jdbc and hibernate

現在我必須實現一個我正在考慮Hibernate的小模塊。我配置了Hibernate(hibernate-cfg.xml),它已經啓動並正在運行。

所以我在兩個地方甲骨文ds.xml中定義和休眠-cfg.xml中DB屬性

  1. 是否確定混合JDBC和一個應用程序休眠,如果不是有什麼問題?
  2. 我是否需要在Hibernate配置和oracle-ds.xml(JBoss應用程序服務器)中配置「連接池」?
  3. 我想過使用JNDI配置hibernate,但需要mbean,HAR這是額外的工作,而這個新模塊很少會被使用。或者我應該將它作爲一個JBoss服務,以便連接池由容器處理?
  4. 我可以使用普通的JDBC,但團隊希望嘗試Hibernate,如果一切正常,我們正在考慮使用Hibernate全天候下一個項目。

回答

0

我們在同一個應用程序中混合了這兩個,沒有任何問題。我將服務器設置爲管理連接池,以使它們最終在JDBC代碼和hibernate代碼之間共享。

你需要記住的一件事是hibernate將數據緩存在內存中,所以如果直接更改hibernate表,應用程序仍會繼續看到緩存中的舊數據。如果關閉緩存,則需要很大的性能提升。它可以節省你的編碼,但是你失去了很多的靈活性。很難通過數據庫與其他應用程序集成,並執行諸如站點之間的複製等操作。

+0

謝謝。你知道我如何讓服務器管理連接池嗎?現在我在hibernate config和oracle-ds.xml文件中定義了「連接池大小」。 – Tag 2010-10-27 13:57:15

+0

我明白了。我使用了oracle-ds文件中的JNDI名稱,它工作。謝謝! – Tag 2010-10-27 15:37:39

1

可以在單個應用程序中混合使用jdbc,hibernate嗎?如果不是,那麼問題是什麼?

這是可行的,但你需要採取一些預防措施:

  • 你不能輕鬆地將JDBC處理的POJO在Hibernate中的圖形處理的對象(所以請儘量使用Hibernate,在一個最深的對象圖或完全Hibernatized圖)。
  • 我想你有一些併發機制,對JDBC和Hibernate使用相同的方法(即從JDBC和Hibernate增加相同版本的列)。
  • 如果您將Hibernate配置爲使用第二級緩存,Hibernate將不會意識到未使用API​​的情況下所做的更改(因此您可能必須實施一些evict機制)。

我需要在Hibernate的配置以及在Oracle的ds.xml中配置「連接池」

我將配置Hibernate使用的應用程序服務器連接池(見Hibernate Datasource Properties) 。

我想過使用JNDI配置hibernate,但需要mbean,HAR這就是額外的工作,而這個新模塊很少會被使用。或者我應該將它作爲jboss服務,以便連接池由容器處理?

您不需要使用JBoss服務或使用HAR來使用連接池,請參閱上面的鏈接。我現在不會爲此煩惱,在我看來這是非常低的優先級。首先,引導第一個原型,看看它如何適合您現有的代碼,需要更改什麼等。