2014-01-18 4 views
4

Я работаю над некоторым кодом, который использует Dropwizard, который потребует, чтобы мне нужно было подключиться как минимум к двум различным базам данных (я также планирую использовать Hibernate). Мне не удалось найти примеры/документацию, которые позволят мне настроить два разных подключения к базе данных в блоке базы данных конфигурационного файла .yml. Возможно ли это в Dropwizard? Если нет, каковы обходные пути, которые люди использовали в прошлом. Спасибо вам за помощь!Возможно ли настроить несколько соединений с базой данных в Dropwizard?

+0

Напишитесь в службу поддержки Dropwizard и спросите их или спросите об их форумах. – Mark

+0

Спасибо, я отправлю туда. С уважением – user3211039

ответ

10

Вы можете настроить несколько баз данных в dropwizard. В config.yml вы можете иметь такую ​​конфигурацию базы данных, как это.

Database1:

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); 

    ... 
} 
Смежные вопросы