Шаблон для работы с различными диалектами базы данных через JDBC - PullRequest
4 голосов
/ 15 сентября 2010

Я создаю приложение, которое должно работать с различными базами данных (Oracle, MSSQL, MySQL ...) через JDBC. Я должен работать через JDBC, потому что мое приложение вызывает хранимые процедуры в этих базах данных.

Каков наилучший подход для создания таких приложений? Есть ли рамки для этого?

Важно : решение должно хорошо работать с Spring Framework.


Я думаю о Hibernate, поскольку это надежное решение ORM и встроенная поддержка хранимых процедур: http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#sp_query

Пожалуйста, предоставьте мне свое мнение о моем нынешнем выборе.


С уважением, Max

Ответы [ 2 ]

3 голосов
/ 15 сентября 2010

Я бы хорошо посмотрел myBatis . Он обрабатывает всю боль, связанную с JDBC, транзакциями и отображением наборов результатов в объекты Java или хэши.

Он также хорошо работает с SQL и хранимыми процедурами, отделяя их от кода Java и конфигурируя их в файлах конфигурации XML. На практике это работает намного лучше, потому что проще копировать запросы из XML в интерактивный браузер SQL и наоборот.

Для подключения к нескольким наборам данных вам нужно создать SqlSessionFactory для каждого источника данных.

1 голос
/ 15 сентября 2010

Hibernate обычно является стандартным вариантом (и тот, который я бы выбрал).Я предпочитаю использовать JPA вместо Hibernate, но это не вариант, если вам нужны хранимые процедуры.Но что касается комментария об iBatis:

Хотя у меня самого нет опыта работы с iBatis, похоже, что поддержка Spring для iBatis неплоха:

Из Spring Reference ,глава 13.6: Карты iBATIS SQL :

Поддержка iBATIS в Spring Framework во многом напоминает поддержку JDBC в том смысле, что она поддерживает то же программирование в стиле шаблона, что и в JDBC и другихТехнологии ORM, поддержка iBATIS работает с иерархией исключений Spring и позволяет вам пользоваться функциями Spring IoC.

Управление транзакциями может осуществляться с помощью стандартных средств Spring.Для iBATIS не требуются специальные стратегии транзакций, поскольку не требуется никаких специальных ресурсов транзакций, кроме соединения JDBC.Следовательно, стандартного Spring JSBC DataSourceTransactionManager или JtaTransactionManager вполне достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...