2014-01-18 62 views
4

我正在研究一些利用Dropwizard的代碼,這將需要我至少需要連接兩個不同的數據庫(我打算使用Hibernate)。我無法找到任何示例/文檔,這些示例/文檔將允許我在.yml配置文件的數據庫塊中配置兩個不同的數據庫連接。這在Dropwizard中可能嗎?如果不是,那麼過去人們使用的解決方法是什麼?先進的謝謝您的幫助!可以在Dropwizard中配置多個數據庫連接嗎?

+0

寫給Dropwizard支持,並詢問他們或詢問他們的論壇。 – Mark

+0

謝謝,我會在那裏發帖。問候 – user3211039

回答

10

您可以在dropwizard中配置多個數據庫。在config.yml中你可以有多個這樣的數據庫配置。

數據庫1:

driverClass: org.postgresql.Driver 
user: user 
password: pwd 
url: jdbc:postgresql://localhost:5432/db1 
validationQuery: select 1 
minSize: 2 
maxSize: 8 

DATABASE2:

driverClass: org.postgresql.Driver 
user: user 
password: pwd 
url: jdbc:postgresql://localhost:5432/db2 
validationQuery: select 1 
minSize: 2 
maxSize: 8 

而且在配置類同時獲得配置的詳細信息。

public class DBConfig extends Configuration { 

    private DatabaseConfiguration database1; 
    private DatabaseConfiguration database2; 

    public DatabaseConfiguration getDatabase1() { 
     return database1; 
    } 

    public DatabaseConfiguration getDatabase2() { 
     return database2; 
    } 
} 

並且在你的服務中配置哪個Dao來使用哪個數據庫。

@Override 
public void run(MyConfiguration configuration, 
       Environment environment) throws ClassNotFoundException { 
    ... 

    final DBIFactory factory = new DBIFactory(); 

    // Note that the name parameter when creating the DBIs must be different 
    // Otherwise you get an IllegalArgumentException 
    final DBI jdbi1 = factory.build(
      environment, configuration.getUserDatabase(), "db1"); 
    final DBI jdbi2 = factory.build(
      environment, configuration.getItemDatabase(), "db2"); 

    final MyFirstDAO firstDAO = jdbi1.onDemand(MyFirstDAO.class); 
    final MySecondDAO secondDAO = jdbi2.onDemand(MySecondDAO.class); 

    ... 
} 
相關問題