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

时间:2013-07-11 11:42:00

标签: java hibernate jpa reflection persistence

我试图理解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 个答案:

答案 0 :(得分:1)

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

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