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

Java 在我的特殊情况下,ORM模型和DAO,java,hibernate,dao,Java,Hibernate,Dao,我的数据库结构如下: 表学生(如姓名、身份证、姓氏等) 表STUDENT\u属性(例如,属性的名称:char,属性的值:char,STUDENT\u id:FK) 表课程(id、名称、课程状态\u id) 某些内容的表状态(id、状态名称:char('active'、'inactive'、'suspended'等)) 表STUDENT\u COURSE(STUDENT\u id、COURSE\u id、某些内容的状态\u id) 让我们尝试在我的数据库中提取域对象: 学生和课程是主要的实体。 学

我的数据库结构如下:

表学生(如姓名、身份证、姓氏等)

表STUDENT\u属性(例如,属性的名称:char,属性的值:char,STUDENT\u id:FK)

表课程(id、名称、课程状态\u id)

某些内容的表状态(id、状态名称:char('active'、'inactive'、'suspended'等))

表STUDENT\u COURSE(STUDENT\u id、COURSE\u id、某些内容的状态\u id)

让我们尝试在我的数据库中提取域对象:

学生和课程是主要的实体。 学生有一份他参加的课程清单,还有一份财产清单,这些都是为这个学生准备的

接下来,当然是整体性。它可能包含一份参加的学生名单

但事实上,整个结构看起来是这样的:起点是学生,有PK 我们可以看看他的财产清单, 然后,我们研究了STUDENT_课程,提取了课程实体的FK和状态 在组合中,它看起来像“名为布拉布拉的学生,拥有他的所有财产, 参加数学学习,数学状态为“活跃”

现在,报价

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

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

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

需要创建的实体包括:

  • 学生
  • 学生属性
  • 课程
  • CourseStatus(实际上不需要,因为您可以在Course中使用枚举字段)
不需要创建StudentCourse,因为您可以在Hibernate中使用多对多映射,它将在Student对象中为您提供一组很好的课程

下面是一个关于hibernate映射的很棒的教程,它几乎完成了您所需要的一切:
您需要创建的实体包括:

  • 学生
  • 学生属性
  • 课程
  • CourseStatus(实际上不需要,因为您可以在Course中使用枚举字段)
不需要创建StudentCourse,因为您可以在Hibernate中使用多对多映射,它将在Student对象中为您提供一组很好的课程

下面是一个关于hibernate映射的很棒的教程,它几乎完成了您所需要的一切:

@James Goodwin可能,但不只是学生id和课程id,还有第三个字段status id(定义表中的一行)可以吗?事实上,该status字段不属于课程,它完全独立存在。只有它在学生id和课程id中的值才有意义。@James Goodwin可能,但在那里可以吗不仅是student_id和course_id,而且是定义表中一行的第三个字段status_id?事实上,该status字段不属于课程,它完全独立存在。只有它在student_course中的值才有意义。