java - Hibernate 如何在运行时更改类或对象

标签 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);
        }
    }

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

最佳答案

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

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

关于java - Hibernate 如何在运行时更改类或对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17592471/

相关文章:

java - Envers AuditReader 阅读器失败

hibernate - GORM-在beforeDelete事件中修改对象不起作用

java - 用于搜索单词/字符串是否包含在实体字段之一中的 JPQL 查询

java - 审核 Restful Web 服务中的用户 ID、服务

java - 从 java 转换为 c++,setRequestProperty 的等效 curl 命令是什么

java - 继承 super() 构造函数中的第一条语句

java - "If"语句替代

java - 我应该以什么顺序将对象放入数据库?

mysql - 查询以在一个 API 中从多个表获取数据(SpringBOOT + JPA)

hibernate - 相当于 Hibernate 的外部 id 生成器的 JPA 是什么?