我们面临着hibernate如何处理多个插入的问题。
首先,我们有几个主键不是自动生成的类的实例。我们将它们保存在一个循环中,然后调用flush。但是hibernate会创建单独的插入查询,如hibernate log (show_sql)所示。这是正常的吗?我们可以让它使用单个插入而不是多个插入吗?
二、看下面的代码:
public void saveCourse() {
Course course = new Course();
List<Student> studentList = new ArraryList();
studentList.add(getStudentService().save(new Student(“hasan”,”askari”)));
studentList.add(getStudentService().save(new Student(“ali”,”alavi”)));
studentList.add(getStudentService().save(Student(“reza”,”rezaei”)));
course.setStudents(studentList);
getCourseService().save(course);
}
当course
对象被保存时,休眠为 table创建单独的插入course_student
。为什么?
这是我们的课程:
@Entity
@Table(name = "student ")
public class Student {
private Long id;
private String name;
private String family;
….
}
@Entity
@Table(name = "course ")
public class Course {
private Long id;
private List<Student> students;
@OneToMany
@JoinTable(name = "course_student")
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
}
生成 Jdbc 批量大小:hibernate.jdbc.batch_size=100
我们在每 100 次保存后刷新会话。