Каковы наилучшие способы реализации единой функциональности для хранения данных в разных базах данных на основе конфигурации? - PullRequest
2 голосов
/ 21 июня 2010

Я хочу реализовать пример в java, который считывает конфигурацию из некоторого файла конфигурации и, исходя из этого, когда пользователь взаимодействует со страницей, приложение будет сохранять некоторые данные в MySql или Oracle в соответствии с параметрами конфигурации. Как мы можем реализовать этот образец наиболее эффективным и умным способом?

Ответы [ 4 ]

3 голосов
/ 21 июня 2010

Действительно, использование Hibernate или JPA позволяет абстрагироваться от различий в базе данных.

С помощью инфраструктуры внедрения зависимостей, такой как Spring или Guice, вы можете создать 2 экземпляра службы, которые отличаются только внедренным диспетчером постоянства.

В этом случае вы можете сохранить почти 100% кода, идентичного для двух баз данных, что гарантирует, что они со временем не будут синхронизированы.

0 голосов
/ 21 июня 2010

В ответ на ответ @ Sjoerd:

Любые инструменты или библиотеки с открытым исходным кодом, которые могут быть полезны?

Hibernate или какая-либо другая реализация JPA - ваш лучший выбор.

Кроме того, в Spring есть несколько классов поддержки JDBC, которые выполняют часть работы ... если вы можете выяснить, какая из различных альтернатив хорошо соответствует вашим требованиям.

К сожалению, реализация приложения, работающего с несколькими бэкэндами базы данных, - тяжелая работа, независимо от того, как вы это делаете.По моему опыту, вы обычно получаете решение, которое не работает так же хорошо, как решение, предназначенное для одной и только одной серверной части базы данных.

Если бы у меня был свой путь, поставщики баз данных, которые отказываютсяРеализация стандарта SQL была бы первой у стены ... наступила революция.

0 голосов
/ 21 июня 2010

Может быть, использовать что-то вроде Hibernate, который абстрагирует базу данных от вас.

0 голосов
/ 21 июня 2010
  • Создайте интерфейс для хранения данных и используйте его в своем приложении
  • Создайте абстрактный класс, который реализует этот интерфейс и реализует функциональные возможности, общие для MySQL и Oracle.
  • Создайте два класса, один для MySQL и один для Oracle, которые реализуют специфичные для базы данных вещи.
  • В вашей конфигурации укажите, какой класс использовать (класс баз данных MySQL или Oracle).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...