我试图理解hibernate是如何工作的,把@Entity放在类上是如何使其成为持久类的?即
@实体A类{私有int b;public int getB(){返回b;}public void setB(int b){this.b=b;}}运行时的行为类似于下面编写的类A类{私有int b;public int getB(){return(从DB中获取b的SQL代码)}公共无效集b(int b){(在数据库中设置b的SQL代码)(b);}}
如果我们说它使用反射,那么它是如何更改方法内部的代码的?
Hibernate代理/运行时编织您的类。这意味着当其他类调用您类的方法时,它不会直接调用它,而是调用代理。然后,该代理包含涉及持久性上下文操作的逻辑。
如果您想更深入地研究这个主题(不一定是hibernate使用的),请查看诸如cglib或aspectj之类的库