Модель ORM и DAO в моем конкретном случае - PullRequest
1 голос
/ 16 марта 2010

У меня есть структура БД следующим образом:

таблица СТУДЕНТ (скажем, id, фамилия и т. Д.)

таблица STUDENT_PROPERTIES (скажем, name_of_the_property: char, value_of_the_property: char, student_id: FK)

таблица COURSE (идентификатор, имя, statusofcourse_id)

таблица STATUSOFSOMETHING (id, name_of_status: char («активный», «неактивный», «приостановленный» и т. Д.))

таблица STUDENT_COURSE (идентификатор студента, идентификатор курса, идентификатор статуса_идентификатора)

Давайте попробуем подобрать доменные объекты в моей базе данных:

Студент и курс являются основными субъектами. У студента есть список курсов, которые он посещает, также у него есть список свойств, которые все для этого студента.

Далее, Курс права. Может содержать список студентов, которые его посещают.

Но на самом деле вся структура выглядит следующим образом: отправной точкой является студент, с его ПК мы можем посмотреть список его свойств, затем мы смотрим в STUDENT_COURSE и извлекаем как FK объекта курса, так и статус из комбинации, это будет выглядеть как «Студент по имени Бла Бла, со всеми его свойствами, посещает математику и имеет статус «АКТИВНЫЙ».

сейчас, цитата

1) Каждый экземпляр DAO отвечает за один первичный объект домена или объект. Если объект домена имеет независимый жизненный цикл, он должен иметь свой собственный DAO.

2) DAO отвечает за создание, чтение (по первичному ключу), обновление и удаление (то есть CRUD) объекта домена.

Теперь первый вопрос Какие лица в моем случае? Student, Course, Student_Course, Status = все, кроме StudentProperties? Нужно ли создавать отдельный DAO для каждого объекта?

1 Ответ

1 голос
/ 16 марта 2010

Объекты, которые вам нужно создать:

  • Студент
  • StudentProperties
  • Курс
  • CourseStatus (на самом деле не обязательно, так как вы могли бывместо этого используйте перечисляемое поле в Course)

StudentCourse не нужно создавать, так как вы можете просто использовать отображение «многие ко многим» в Hibernate, и он даст вам хороший набор курсовв вашем объекте Student.

Вот отличное руководство по отображению гибернации, которое делает практически все, что вам нужно: http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-many-1.html

...