Несколько DAO против одного DAO с файлом конфигурации - PullRequest
2 голосов
/ 03 октября 2011

Я сейчас нахожусь в процессе создания слоя доступа к данным для приложения.Изначально это приложение будет подключаться к базе данных Oracle, но позже будет также подключаться к базе данных DB2.

Для подключения к базе данных я буду использовать JDBC.На данный момент я рассматриваю свои варианты.На мой взгляд, у меня есть два (основных) варианта.

1) Создайте проект с поддержкой нескольких фабрик DAO, каждый из которых создает DAO для своей базы данных.Изначально этот дизайн будет иметь только одну фабрику.Позже он будет расширен за счет второй фабрики и классов DAO.

2) Создайте одну фабрику DAO, которая создает несколько DAO для разных моделей.Эта фабрика DAO создает DAO на основе файла конфигурации, который содержит путь к драйверу JDBC и URL-адрес соединения.

Я испытываю желание выбрать второй вариант, который, по-видимому, устраняет некоторое дублирование кода в DAO.Кто-нибудь может рассказать о плюсах и минусах обоих подходов?

Почему вы выбрали бы несколько фабрик DAO (абстрактный шаблон фабрики), когда он вам на самом деле не нужен при использовании JDBC?

Ответы [ 2 ]

3 голосов
/ 03 октября 2011

Я полагаю, Spring или Guice будет лучшим и наиболее чистым вариантом для вас, когда вы захотите выбрать подходящую реализацию DAO и внедрить ее на потребительском уровне DAO. Spring также позволит вам использовать Spring-JDBC, который заботится о большей части стандартного кода, облегчая управление и кодирование ваших DAO Impls. Вы также можете использовать ORM с Spring.

2 голосов
/ 03 октября 2011

Учитывая, что вы не можете использовать Spring (хотя это избавит вас от большого количества кодирования), я бы сказал, что 2-й вариант больше подходит вам, потому что вы собираетесь реализовать управление зависимостями самостоятельно и 1зависимость (одна фабрика DAO) всегда проще, чем 2.

Хотя, если вы ожидаете, что количество мест, где DAO для обеих баз данных используются вместе, невелико, то разделение их на 2 фабрики будет иметь лучшую структурную структуру.смысл и более чистый.Но если вы ожидаете, что почти каждому классу, использующему DAO, потребуются оба мира (Oracle + DB2), то снова придерживайтесь второго варианта.

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

...