2013-03-07 4 views
0

Использование Spring и JDBCTemplates (без ORM), у меня есть DAO, который идет против базы данных CMS.Один DAO для подключения к базе данных?

Теперь у меня есть необходимость в доступе к другой базе данных. Должен ли я создать отдельный DAO или использовать один большой DAO? Кажется, что я работаю в моем случае. У меня есть интерфейс, но это не общий интерфейс. За исключением INSERT в таблице аудита, все, что я делаю, - это получение значений. Поэтому я не чувствую, что мне нужен отдельный CRUD-сервис для каждой таблицы, за это link

Я не думаю, что это действительно имеет значение, но одна база данных - это MySQL, другая - Oracle.

ответ

3

Вы можете прочитать о шаблоне DAO в Google, но, как правило, вы создаете один DAO для каждой таблицы или группы связанных таблиц. Я не знаю, что вы подразумеваете под «базой данных». Некоторые люди используют термины таким образом. (Вы обновили свой вопрос, чтобы объяснить «базу данных» Таким образом, вы, как правило, имеют несколько объектов DAO для каждой базы данных по одному в таблице или набор связанных таблиц.).

Так что «Да»

Примечание: Когда я говорю «родственный таблицы "Возможно, мне придется объяснить. Например, если у вас есть таблица счетов и таблица invoice_detail. Строки подробностей, как правило, похожи на строку на бумажном счете-фактуре и имеют внешний ключ обратно к идентификатору счета или номер счета-фактуры в таблице счетов. Есть две таблицы, но у вас, вероятно, будет один DAO для обработки счетов-фактур и связанных с ними деталей. Могут быть методы получения счета-фактуры по номеру счета-фактуры и клиентом, а также по количеству их по дате и, возможно, также для получения всех счетов-фактур в течение месяца, которые имеют конкретный элемент на одной из их подробных строк. Были бы методы создания счета-фактуры и создания всех строк на нем. И так далее. Один DAO, но несколько таблиц.

Строки деталей могут иметь внешние ключи, указывающие на таблицу «детали» с деталями на деталях. Возможно, вам захочется прочитать информацию о деталях и вернуть ее с помощью счета-фактуры, и вы можете просто прочитать части отдельно после того, как прочитаете счет. В последнем случае будет второй DAO, который имеет методы для чтения и, возможно, изменения записей деталей.

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

0

У вас может быть несколько «DAO» для каждой таблицы или объекта данных в приложении Spring, но вы все равно должны разделять вызовы базы данных, а Spring нужно знать разные параметры соединения и которые можно разделить с помощью определений DAO в applicationContext , Это звучит как кандидат на веб-службу REST для обработки ваших запросов из другой базы данных.

1

Вы должны ввести в свои DAO DataSource, которые вы, в свою очередь, используете для создания своего SimpleJdbcTemplate. Поскольку DataSource подключается к определенной базе данных, из этого следует, что для каждой вашей базы данных вам понадобятся отдельные DAO/DataSource s/SimpleJdbcTemplate.