Hibernate GenericDAO для отношений родитель / ребенок и паттерны DAO / DTO - PullRequest
1 голос
/ 07 апреля 2010

Я ищу универсальную реализацию DAO в Hibernate, которая включает управление отношениями между родителями и детьми (добавление, удаление, получение детей, установка родителей и т. Д.).

На самом деле наиболее часто используемый DAO в Интернете - это тот, который я нашел на jboss.org .

А также я искал примеры реализации DAO / DTO и шаблоны проектирования.

Знаете ли вы какие-нибудь хорошие ресурсы там?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2010

Я ищу универсальную реализацию DAO в Hibernate, которая включает управление отношениями между родителями и детьми (добавление, удаление, получение детей, установка родителей и т. Д.).

Я бы сохранил управление родительскими / дочерними ссылками на уровне сущности (не у всех сущностей есть родительские / дочерние ссылки), но я бы создал методы управления ссылками на них, чтобы установить обе стороны при работе с двунаправленными ссылками, как описано в 1.2.6. Работающие двунаправленные ссылки .

На самом деле наиболее часто используемый DAO в Интернете - это тот, который я нашел на jboss.org.

В коде Google есть несколько проектов с примерами. Я бы предложил проверить:

  • generic-dao - Набор инструментов для доступа к данным JPA
  • daofusion - реализация шаблона DAO на основе Java с использованием JPA / Hibernate.
  • hibernate-generic-dao - Универсальная реализация DAO: расширяемый, подробный поиск, интерфейс удаленного обслуживания
0 голосов
/ 07 апреля 2010

Родительские / дочерние отношения - это особый тип отношений «один ко многим», и для их взаимодействия не требуется специальный DAO. Вы просто пишете код вроде:

Parent p = new Parent();
Child c1 = new Child();
Child c2 = new Child();
// populate c1 and c2
p.addChild(c1);
p.addChild(c2);
childDao.save(c1);
childDao.save(c2);
parentDao.save(p);

Есть раздел документа Hibernate, который фактически показывает пример реализации родитель / потомок: Глава 21. Пример: Parent / Child

Если вы предпочитаете использовать аннотации и / или Hibernate / JPA, взгляните на: Принимая JPA для тест-драйва

...