2014-03-24 120 views
0

我需要使用休眠與2個或更多的基地。由於這些基地具有相同的表格,我想在使用重複的相同對象和表格時不會有問題。因此,我想知道如何在HibernateUtil建立連接上使用其他文件,使用不同的文件hibernate.cfg.xml,但具有相同的映射屬性。休眠與多個數據庫

我想象它是沿着這些路線的東西:

sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 

但我沒有想法如何配置其他文件。

+1

你說的是使用兩個數據庫的單個應用程序?或者部署一個應用程序來使用一個數據庫或另一個?如果前者,爲什麼應用程序使用兩個數據庫?你想達到什麼目的? – Hedley

+0

究竟是@赫德利所說的......對於第二個(在飛行中選擇一個數據庫)在休眠多租戶可能會覆蓋您的需求 – dimzak

+0

我有兩年1500萬條記錄,我想我分享這些數據以改善搜索。 –

回答

0

事情是有2個不同的會話工廠提供程序,每個提供程序都配置有相應的數據庫。

在下面的示例中HibernateUtilDb1將使用hibernate-db1.cfg.xml中的配置,而HibernateUtilDb2將使用hibernate-db2.cfg.xml

public class HibernateUtilDb1 { 

    private static final SessionFactory sessionFactory = buildSessionFactory(); 

    private static SessionFactory buildSessionFactory() { 
     try { 
      return new Configuration().configure("hibernate-db1.cfg.xml").buildSessionFactory(); 
     } 
     catch (Throwable ex) { ...} 
    } 
... 

和:

public class HibernateUtilDb2 { 

    private static final SessionFactory sessionFactory = buildSessionFactory(); 

    private static SessionFactory buildSessionFactory() { 
     try { 
      return new Configuration().configure("hibernate-db2.cfg.xml").buildSessionFactory(); 
     } 
     catch (Throwable ex) { ...} 
    } 
...