Использование шаблона DAO - PullRequest
0 голосов
/ 03 июня 2011

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

Теперь мне интересно, как я могу сделать свою программу модульной, используя лучшие практики. Я думаю сделать:

  • Проект DAO, имеющий два фабричных класса для каждой базы данных, интерфейсы DAO для каждой таблицы и DTO для каждой таблицы.
  • Затем в каждом проекте веб-приложения я планирую написать код реализации для интерфейса DAO и необходимый служебный класс для получения и закрытия соединений.

Этот подход хорош? Сомнения / проблемы, с которыми я сталкиваюсь, связаны с этим дизайном, если я собираюсь отправить какой-либо проект, который мне нужен для проекта DAO, но который будет содержать ненужную информацию о других базах данных.

Или будет хорошо прикрепить все необходимые DAO в самом веб-приложении? Если так, то я должен написать одну и ту же оду DAO для каждого веб-приложения.

Надеюсь, кто-нибудь может предоставить мне четкий путь для этого соединения с БД, используя шаблон DAO.

Ответы [ 2 ]

1 голос
/ 03 июня 2011

В общем, вы движетесь в правильном направлении, разделяя ваши проблемы.

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

Если это скорее сочетание и сопоставление (веб-приложение a использует db a, веб-приложение b использует db b, веб-приложение c использует a и b), я бы рассмотрел два проекта DAO, по одному на базу данных, если только нет много объединенной логики - то есть, когда приложение использует обе базы данных, оно делает соединения между ними [да, у меня были проекты, которые делают это].

Я бы также рекомендовал взглянуть на среду Object / Relational Mapping (ORM), такую ​​как Hibernate и / или инфраструктуру Dependency Injection, такую ​​как Spring , которая может помочь упростить Процесс разделения различных проектов и последующего их совместного использования.

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

0 голосов
/ 03 июня 2011
  • Используйте JPA для доступа к БД.Если это невозможно, используйте JdbcTemplate (Spring)
  • EntityManager (JPA) - это разновидность DAO
  • DAO только там, где это имеет смысл (например, сложная, многократно используемая логика с использованием EntityManager)
  • Использовать пул соединений / источников данных.
  • DTO обычно требуются, только если ваши объекты должны покинуть JVM (например, удаленные службы EJB, веб-службы, ...)
  • использовать EJB для контейнерауправляемые транзакции
  • учитывают шаблон шлюза (сессионный компонент с сохранением состояния и расширенный контекст персистентности, см. «Шаблоны реального мира Java EE - переосмысление передового опыта» Адама Бина) и просто возвращают присоединенный объект.
...