JAVA新手提问
发布网友
发布时间:2022-04-23 19:54
我来回答
共2个回答
热心网友
时间:2022-04-13 23:18
这感觉已经不是Java的问题了。
延时加载无非就是等到使用的时候才去加载。
一般形式是:
private Object instance;
public Object getInstance(){
if (instance == null){
instance = new Object();
}
return instance;
}
hibernate需要为每个对象加上这种东西,但是又要屏蔽这种变化,因此采用代理来解决(自行搜索代理模式)。
一般是代理接口的:
public interface AbstractInterface{
public void operation();
}
public class ConcreteClass implements AbstractInterface{
public void operation(){
\\do something
}
}
public class ProxyClass implements AbstractInterface{
private ConcreteClass proxyee;
public void operation(){
if (proxyee == null){
proxyee = new ConcreteClass ();
}
proxyee.operation();
}
}
但是hibernate不可能为每个实体类生成上面的代码,因此采用了动态代理(也是自行搜吧)。Java的动态代理是基于接口的,所以hibernate采用了cglib来作动态代理,是一个第三方的反射项目,可以基于类作动态代理,使用继承的方式。
热心网友
时间:2022-04-14 00:36
是跟缓存有关吗?还是什么,需要自己的理解吧,我不太懂!