Шаблоны проектирования Java EE 6 - PullRequest
6 голосов
/ 08 апреля 2011

Я хотел бы знать о шаблонах проектирования, которые можно применять в реализации Java EE 6.

  • MVC.
  • GOF.
  • DAO
  • Постоянное реляционное отображение
  • 1012 * Pooling *
  • CEC
  • Граница контроля объекта (ECB)
  • и многие другие

JPA исключает использование DAO?
Пожалуйста, предоставьте другие образцы, которые могут быть изучены.

Ответы [ 2 ]

12 голосов
/ 08 апреля 2011

Здесь есть хорошая ссылка: http://martinfowler.com/eaaCatalog/

Также здесь: http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html

Кроме того, JPA не обязательно устраняет необходимость в слое DAO.Вместо этого ваш уровень DAO по-прежнему будет создавать запросы JPA, вероятно, в методах поиска и возвращать сущности, которые были возвращены этими запросами.

Вы можете исключить слой DAO и вместо этого попадать в сущности JPA непосредственно в бизнес-уровне, но лично мне все еще нравится поддерживать отдельный уровень персистентности (DAO) и бизнес-уровень, особенно в тех случаях, когда мне приходится смешивать немного JPA с простым JDBC и т. д.

Существует большое резюмедебаты здесь .Лучший ответ, что это зависит.Если ваше приложение сложное, и в некоторых случаях вы можете обращаться к JDBC напрямую (потому что инструменты JPA и ORM не являются ответом на все вопросы, и в некоторых вещах они очень плохие), или если вам нужно извлечь данные из источников, которые просто неЕсли вы не будете хорошо работать с ORM, вам все равно понадобится слой DAO, поэтому, на мой взгляд, я предпочел бы быть последовательным и использовать слой DAO для всего.Как правило, это не так сложно, и это изолирует вашу бизнес-логику от вашей логики постоянства, что я считаю хорошей вещью.Но это вопрос личных предпочтений, и если ваше приложение достаточно простое, оно, вероятно, излишне.

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

4 голосов
/ 08 апреля 2011

Если вы используете Java EE 6 (не Java EE 5), то некоторые технические шаблоны J2EE больше не нужны для задачи, которую они используют в J2EE.

Например, используйте инъекцию вместо ServiceLocator.

@ См. http://pawelstawicki.blogspot.com/2010/07/review-real-world-java-ee-patterns.html


Шаблоны GOF по-прежнему требуются, поскольку они не связаны (только) с Java EE.

В целом: шаблоны имеют намерение: они хотят выработать решение / наилучшую практику для проблемы с заданным набором функциональных возможностей, предоставляемых средой (в вашем случае: это Java, Java EE6, ...)

  • Если проблема исчезла: вам больше не нужен шаблон
  • Если среда изменилась с тех пор, как шаблон увлекся, то у вас естьпереосмыслить шаблон, потому что, возможно, проблема ушла (первая точка), или теперь есть лучший способ справиться с проблемой.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...