2010-03-16 14 views
1

J'ai la structure DB comme suit:modèle ORM et DAO dans mon cas particulier

Table ETUDIANT (par exemple, id, nom, etc.) (disons

STUDENT_PROPERTIES de table, name_of_the_property: char, value_of_the_property: char , student_id: FK)

tableau COURS (id, nom, statusofcourse_id)

tableau STATUSOFSOMETHING (id, name_of_status: char ('actif', 'inactif', 'suspendu', etc.))

Table STUDENT_COURSE (student_id, course_id, statusofsomething_id)

Essayons de ramasser des objets de domaine dans ma base de données:

étudiants et des cours sont des entités principales. Étudiant a une liste de cours qu'il fréquente, il a aussi une liste de propriétés, c'est tout pour cet étudiant.

Ensuite, l'intitulé du cours. Il peut contenir une liste d'étudiants qui y assistent.

Mais en fait, toute la structure ressemble à ceci: le point de départ est l'élève, avec ses PK nous pouvons regarder une liste de ses propriétés, alors nous regardons dans le STUDENT_COURSE et extraire les deux FK de l'entité de cours et aussi le statut de la combinaison, il ressemblerait à « étudiant nommé bla bla, avec toutes ses propriétés, assiste les mathématiques et le statut de celui-ci est « ACTIVE ».

maintenant, citation

1) Chaque L'instance de DAO est responsable d'un objet ou d'une entité de domaine principal Si un objet de domaine a un cycle de vie indépendant, il devrait avoir son propre DAO.

2) Le DAO est responsable des créations, des lectures (par clé primaire), des mises à jour et des suppressions - c'est-à-dire CRUD - sur l'objet de domaine.

Maintenant, la première question est Quelles sont les entités dans mon cas? Student, Course, Student_Course, Status = tous sauf pour StudentProperties? Dois-je créer un DAO distinct pour chaque objet?

Répondre

1

Les entités que vous aurez besoin de créer sont:

  • étudiant
  • StudentProperties
  • Cours
  • CourseStatus (pas vraiment nécessaire que vous pouvez utiliser un champ dénombrée à la place du cours)

StudentCourse n'a pas besoin d'être créé, car vous pouvez simplement utiliser un mappage Many-to-Many dans Hibernate et vous donnera une belle série de cours dans votre objet étudiant.

Voici un tutoriel sur la cartographie de mise en veille prolongée qui fait presque tout ce que vous avez besoin: http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-many-1.html

+0

@ James Goodwin Probablement, mais est-il correct qu'il n'y a pas seulement student_id et course_id, mais aussi le troisième champ, status_id que définit une ligne dans la table? En fait, ce champ de statut n'appartient pas au cours, il existe complètement indépendamment. Seule sa valeur dans STUDENT_COURSE a du sens. – EugeneP