java - 多对多关系中的模型结构

标签 java model-view-controller

例如,如果我的数据库中有以下表格,并且学生和类(class)之间存在多对多关系。

Student
-------
Id (Primary Key)
FirstName
LastName

Course
------
Id (Primary Key)
Title

StudentCourse
-------------
StudentId (Foreign Key -> Student)
CourseId (Foreign Key -> Course)

现在如果我的模型如下

public class Student
{
  private int ID;
  private String firstName;
  private String lastName;

  //getter and setter
}

public class Course
{
private int ID;
pirvate String title;
//getter and setter
}

所以我的问题是如果我只创建这两个 bean 我会遇到什么样的问题?我会遇到什么样的问题以及在什么情况下?请为这种多对多关系指定正确的 bean 结构。

最佳答案

你会遇到什么问题:

  • 您将看不到学生 - 类(class)关联
  • 您将无法从类(class)导航到类(class)中的学生(反之亦然)
  • 如果学生/类(class)在 StudentCourse 表中(违反外键),您将无法删除它

通常:您不希望这样。

可能的解决方案:使用 ORM 系统,例如 Hibernate、EclipseLink 或 OpenJPA。然后你可以有一个private List<Student> students;在你的Course实体(实体在这里比 bean 更好,恕我直言),和/或 private List<Course> courses;Student实体。

要在 List<> 字段和数据库中的连接表之间建立实际关联,您需要配置映射(这是 ORM 用来弥合数据库模式和实体之间差距的配置)。

关于java - 多对多关系中的模型结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14219954/

相关文章:

java - 是什么让框架成为 "true"MVC 框架?

model-view-controller - 在 node.js 模块中异步初始化导出可以吗?

java - 在 android 中使用 java 代码创建 Android 布局

java - 在Java中,在DecimalFormat替换方法中将点转换为逗号

java - 此标记后应有 VariableDeclaratorId

ruby-on-rails - 将收藏夹关联添加到 Rails 中的用户模型

design-patterns - Meteor.js 使用哪种架构模式?

java - 为什么用ConfirmDialog关闭Frme窗口会在两种情况下(确定和取消)关闭?

java - SpinLock 可扩展性和限制

javascript - 我可以使用新的 'controller as' 语法将 Typescript 类用作 AngularJS Controller 吗