我试图理解hibernate是如何工作的,因为如何将@Entity放在一个类上使它成为一个持久化的类? 即
@Entity class A{ private int b; public int getB(){ return b; } public void setB(int b){ this.b = b; } } behaves like below written class at runtime class A{ private int b; public int getB(){ return (SQL code to fetch b from DB) } public void setB(int b){ (SQL code to set b in DB)(b); } }
如果我们说它正在使用反射,那么它是如何更改方法中的代码的呢?
答案 0 :(得分:1)
Hibernate proxied / runtime-weave你的类。当其他类调用您的类的方法时,它不会直接调用它,但它会调用代理。然后,此代理包含涉及持久性上下文操作的逻辑。
如果您想深入研究本主题(不一定是hibernate使用的那些),请查看cglib或aspectj等库。