首页 文章

hibernate如何在运行时更改类或对象

提问于
浏览
0

我试图理解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);
        }
    }

如果我们说它正在使用反射,那么它是如何更改方法内的代码的呢?

1 回答

  • 1

    Hibernate代理/运行时编织你的类 . 当其他类调用您的类的方法时,它不会直接调用它,但它会调用代理 . 然后,此代理包含涉及持久性上下文操作的逻辑 .

    如果你想深入研究这个主题(不一定是hibernate使用的那些),请查看cglib或aspectj等库 .

相关问题