我的数据库结构如下:
表学生(比如,身份证,姓氏等)表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?
答案 0 :(得分:1)
您需要创建的实体是:
不需要创建StudentCourse,因为你可以在Hibernate中使用多对多映射,它会在你的Student对象中为你提供一套很好的课程。
这是一个很棒的hibernate映射教程,可以完成你需要的所有东西: http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-many-1.html