如何将包含对象数组列表的 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;
}
我有一个学生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;
}