如何将包含对象数组列表的 Java 对象写入 SQL 数据库

How to write an Java Object that contains an arraylist of Objects to SQL database

我有一个学生class:

public class Student implements Serializable{
    //each student has an arraylist of modules

    private String name = null;     //students name
    private int ID = 0;             //students ID number
    private String DOB = null;      //Students Date of Birth

    private ArrayList <Module> modules;         //creating the students module arraylist

public Student(String name,int ID, String DOB) {
    this.setName(name);
    this.setID(ID);
    this.setDOB(DOB);
    setModules(new ArrayList <Module> ());          //initialising the arraylist
}

每个学生都有很多模块以及他们在每个模块中获得的成绩。我需要将这些学生对象写入 Mysqln 数据库,但我将如何存储每个学生在学生 table?

中的模块数组列表

取决于您打算如何设计您的应用程序,以防您想要遵循多对多关系(每个学生有 N 个模块,每个模块由多个学生完成)。

这种映射可以通过两种方式完成,单向或双向,这取决于您打算如何操纵实体或何时有更强的实体。

除非你使用另一种数据库(Mysql 是关系型的)或者想查看一个列表,否则你无法在同一个学生 table 中存储模块列表textual/blob 列中的逗号分隔字符串,我认为这是一个非规范化的糟糕实现。

这是一个您可以尝试的代码片段,它会创建一个中介 table 来存储实体之间的关系。

@Entity
@Table(name="student")
class Student {

private long studentId;

@ManyToMany
    @JoinTable(name="student_modules", joinColumns=
    {@JoinColumn(name="student_id")}, inverseJoinColumns=
      {@JoinColumn(name="module_id")})
List<Module> modules;

}

@Entity
@Table(name="notebook")
public class Module {

 private long moduleId;
}