1

我试图了解休眠是如何工作的,即如何将@Entity 放在一个类上使其成为一个持久类?IE

    @实体
    A类{
        私人int b;

        公共int getB(){
        返回 b;
        }

        公共无效setB(int b){
        这个.b = b;
        }
    }

在运行时的行为类似于下面的编写类

    A类{
        私人int b;

        公共int getB(){
        返回(从数据库中获取 b 的 SQL 代码)
        }

        公共无效setB(int b){
        (在 DB 中设置 b 的 SQL 代码)(b);
        }
    }

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

4

1 回答 1

1

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

如果您想深入研究这个主题,请查看诸如cglib或 aspectj 之类的库(不一定是 hibernate 使用的库)

于 2013-07-11T13:04:14.663 回答