对于这句话的理解(结合项目实际)是:
如果你查询
student时,不需要同时显示teacher的数据,那么就设置lazy=true 或者 lazy=proxy即可或。
public static student instance = new student();
但若你设置lazy=true 或者 lazy=proxy ,即使用 Lazy Loading,在加载一个 student的时候,不会自动加载其 teacher的数据,Hibernate 会自动给
student类生成一个 Proxy,将其 teacher的 ID 付给这个 Proxy。只有在访问 teacher的具体数据的时候,这个 Proxy 才会自动调取数据。
而在给
student类生成一个 Proxy时,如果你的构造器为private,Hibernate将无法完成这一工作,
那么程序会抛出Javassist Enhancement failed:
异常。
会在查询时关联两张表从而生成的sql就可能只有一条。而若你设置的是Lazy Loading,那么肯定会生成1+N条sql语句:其中1
是查询student的语句,N是 根据N个student的id去查询head的N条语句。而且延迟加载是要用到的时候才去执行查询,这样系
统就要判断哪里需要加载哪里不需要 加载,性能上肯定不如立即加载!
是查询student的语句,N是 根据N个student的id去查询head的N条语句。而且延迟加载是要用到的时候才去执行查询,这样系
统就要判断哪里需要加载哪里不需要 加载,性能上肯定不如立即加载!