Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jpa:在子实体中的急切加载与惰性加载_Java_Jpa_Lazy Loading_Eager Loading - Fatal编程技术网

Java jpa:在子实体中的急切加载与惰性加载

Java jpa:在子实体中的急切加载与惰性加载,java,jpa,lazy-loading,eager-loading,Java,Jpa,Lazy Loading,Eager Loading,我有两门课 Student.java 我知道即时加载和延迟加载的区别在于,即时加载可以帮助您一次加载所有需要的实体,而延迟加载可以在需要时加载它们。对于我的Student类,由于我使用惰性加载,它加载Student\u id和Student\u名称,但在调用getBooks()方法之前不会加载列表书籍。对于父实体来说,这很清楚。 但是对于子实体,它有点混乱。在类书中使用急切加载和惰性加载有什么区别(在@manytone关系中)你的问题不清楚。在Book对象中,它将以相同的方式运行,student

我有两门课

Student.java

我知道即时加载和延迟加载的区别在于,即时加载可以帮助您一次加载所有需要的实体,而延迟加载可以在需要时加载它们。对于我的Student类,由于我使用惰性加载,它加载Student\u id和Student\u名称,但在调用getBooks()方法之前不会加载列表书籍。对于父实体来说,这很清楚。
但是对于子实体,它有点混乱。在类书中使用急切加载和惰性加载有什么区别(在@manytone关系中)

你的问题不清楚。在Book对象中,它将以相同的方式运行,student对象将被延迟加载。那么为什么大多数人在父类上使用lazy,在子类上使用Earge?您可以在父类中使用,因为它有一个列表。这必须从数据库中加载许多数据。这些类又可能与其他类有关系,导致它加载所有不需要的东西。其中,在子类中,在您的例子中,它是一个
@ManyToOne
,它只是一个对象。这就是为什么默认的
@ManyToOne
获取类型是急切的。
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int student_id;
private String student_name;
@OneToMany(mappedBy ="student", cascade = CascadeType.ALL,fetch=FetchType.LAZY )
private List<Book> books;

//the getters and setters
}
 public class Book
    { @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      private int book_id;
      private String book_name;
      @ManyToOne(fetch=FetchType.LAZY)
      private Student student;
    
    //the getters and setters
    }