Spring dblink и вызывает триггер на другой базе данных - PullRequest
0 голосов
/ 19 сентября 2019

Здравствуйте, я бы спросил вас о рекомендуемых решениях для подключения другой базы данных в Spring + Hibernate.

В моем случае у меня небольшое приложение с базой данных, и мне нужно получить некоторые данные из другой(большой) дб.В настоящее время я делаю это с postgresql и dblink , но теперь было бы лучше перенести этот запрос в код.В ближайшем будущем мне также потребуется вызвать триггеры в этой базе данных.

Итак, вопрос в том, что является наилучшей практикой для решения такого рода проблем с соединением?

Чтобы подвести итог, мне нужно:

  • вызвать другой триггер базы данных
  • вызвать dblink и получить данные из другой базы данных

1 Ответ

0 голосов
/ 19 сентября 2019

Вы можете попробовать это, чтобы вызвать другую базу данных из вашего приложения весенней загрузки.Таким образом, ваше базовое приложение будет использовать MySQL, а вторичной базой данных будет Postgres.

  1. Если вы используете spring-boot, то создайте папку lib в папке проекта (та же иерархия src).Добавьте требуемый jdbc jar в эту папку.

  2. Затем создайте класс DataBaseConfig с @Configuration, внутри этого класса создайте bean-компонент ComboPooledDataSource и JdbcTemplate.

  3. Теперь в вашем классе обслуживания просто выполните Autowiring этого компонента JdbcTemplate.Затем напишите SQL-запрос, чтобы получить значение, используя этот метод queryForList

  4. В pom.xml вы можете отобразить этот внешний файл JAR, как показано ниже

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>db2jcc</artifactId>
        <version>11.1</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/lib/mysql.jar</systemPath>
    </dependency>
    
    
    @Configuration
    public class DatabaseConfig {
    
    @Bean(name = "employeeDataBase")
    @ConfigurationProperties(prefix = "employee.datasource")
    public ComboPooledDataSource employeeDataSource() {
        return new ComboPooledDataSource();
    }
    
    @Bean(name = "employeeTemplate")
    public JdbcTemplate employeeTemplate(@Qualifier("employeeDataBase") DataSource ds) {
        return new JdbcTemplate(ds);
    }
    }
    
    @Service
    public class EmployeeService {
    
    @Autowired
    @Qualifier("employeeTemplate")
    JdbcTemplate employeeTemplate;
    
    public void getEmployeeFromExternalDB() {
        List<Map<String, Object>> maps = employeeTemplate.queryForList("SELECT * FROM EMPLOYEE");
    }
    }
    
    //application.properties
    employee.datasource.jdbc-url=${EMPLOYEE_URL}
    employee.datasource.user=${EMPLOYEE_UNAME}
    employee.datasource.password=${EMPLOYEE_PWD}
    employee.datasource.driver-class=com.edb.Driver
    employee.datasource.max-idle-time=6
    employee.datasource.min-pool-size=3
    employee.datasource.max-pool-size=15
    employee.datasource.jdbcUrl=${EMPLOYEE_URL}
    employee.datasource.driver-class-name=com.edb.Driver
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...