在我的特定情况下,ORM模型和DAO

时间:2010-03-16 10:53:11

标签: java hibernate dao

我的数据库结构如下:

表学生(比如,身份证,姓氏等)

表STUDENT_PROPERTIES(比如,name_of_the_property:char,value_of_the_property:char,student_id:FK)

表COURSE(id,name,statusofcourse_id)

表STATUSOFSOMETHING(id,name_of_status:char('active','inactive','suspended'等))

表STUDENT_COURSE(student_id,course_id,statusofsomething_id)

让我们尝试在我的数据库中选择域对象:

学生和课程是主要实体。 学生有一份他参加的课程清单,还有一份属性列表,这些都是为这名学生准备的。

接下来,课程权利。它可能包含参加它的学生名单。

但事实上,整个结构看起来像这样:起点是学生,它是PK 我们可以查看他的房产清单, 然后我们查看STUDENT_COURSE并提取课程实体的FK和状态 在组合中,它看起来像“学生命名bla bla,具有他所有的属性, 参加数学,它的状态是“活动”。

现在,引用

1)每个DAO实例负责一个主域对象或实体。如果域对象具有独立的生命周期,则它应该有自己的DAO。

2)DAO负责域对象的创建,读取(通过主键),更新和删除(即CRUD)。

现在,第一个问题是 在我的案例中有哪些实体? 学生,课程,学生课程,状态=除StudentProperties以外的所有课程? 我是否必须为每个对象创建一个单独的DAO?

1 个答案:

答案 0 :(得分:1)

您需要创建的实体是:

  • 学生
  • StudentProperties
  • CourseStatus(不是必需的,因为你可以在课程中使用枚举字段)

不需要创建StudentCourse,因为你可以在Hibernate中使用多对多映射,它会在你的Student对象中为你提供一套很好的课程。

这是一个很棒的hibernate映射教程,可以完成你需要的所有东西: http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-many-1.html