1

休止状態が複数の挿入を処理する方法に関する問題に直面しています。

まず、主キーが自動生成されないクラスのインスタンスがいくつかあります。それらをループに保存してから、フラッシュを呼び出します。ただし、hibernate は、hibernate ログ (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 回の保存ごとにセッションがフラッシュされます。

4

1 に答える 1