我试图理解 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); } }
如果我们说它使用反射,那么它如何更改方法内部的代码?
最佳答案
Hibernate 代理/运行时编织你的类。这意味着当其他类调用您的类的方法时,它不会直接调用它,而是调用代理。然后,该代理包含涉及持久性上下文操作的逻辑。
看看诸如 cglib 之类的库或者aspectj,如果你想深入研究这个主题(不一定是hibernate使用的)
关于java - Hibernate 如何在运行时更改类或对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17592471/