如何在MySQL中创建包含关系的复合键对应的java对象

如何在MySQL中创建包含关系的复合键对应的java对象,java,mysql,Java,Mysql,我是Java新手,我将这样解释我的问题 据我所知,在关系数据库中,如果两个表之间存在任何关系,我们将通过外键保留引用。具体如下。Employee和Company表之间存在关系Employee表通过引用companyId作为外键与公司保持关系。这是关于关系数据库的 在java编程中,我们可以为上述名为Employee和Company的表创建相应的对象,如下所示 class Company{ private int companyId; private String company

我是Java新手,我将这样解释我的问题

据我所知,在关系数据库中,如果两个表之间存在任何关系,我们将通过外键保留引用。具体如下。EmployeeCompany表之间存在关系Employee表通过引用companyId作为外键与公司保持关系。这是关于关系数据库的

在java编程中,我们可以为上述名为EmployeeCompany的表创建相应的对象,如下所示

class Company{
    private int companyId;
    private String companyName;
    private String address;

    //getters and setters
}

class Employee{
    private int id;
    private String name;
    private int companyId;//this field use to refer the company table

    //getters and setters
}
在员工类公司ID中,用于指代公司类

例如,当关系表中有多个值时,我们会得到两个表,如StudentSubject。学生可以有许多学科,以及学科,可以属于许多学生。在这种情况下,我们需要根据第一个范式使用复合键创建另一个名为Student\u Subject的表。复合键(studentId,subjectId)可用于唯一引用属于特定学生的科目

我的问题是这个表(Student\u Subject)如何表示上面示例中的java应用程序。我们是否创建了一个与学生主题相对应的新类,如下所示

class StudentSubject{
     private int subjectId;
     private int studentId;

     //getters and setters
}

一个明显的方法是在
学生
班级中放置一组科目ID:

class Student {
    int id;
    String name;
    ...
    Set<Integer> subjectIds = new HashSet<>();
}
班级学生{
int-id;
字符串名;
...
Set subjectIds=new HashSet();
}

如果需要,您还可以在
主题
类中添加学生ID列表。

您需要的是学生和主题实体之间的多对多关联

请检查示例

如果您使用表的简单id,也可以不使用StudentSubject实体来执行此操作。只需使用@JoinTable映射即可存储关系


上面的一个是普通对象,我们可以这样做,如果您正在Java中寻找JPA方式,不需要一个额外的表学生主题类,下面是JPA方式的示例,下面是参考