【问题标题】:How does Hibernate create proxies of concrete classes?Hibernate 如何创建具体类的代理?
【发布时间】:2008-12-24 18:28:15
【问题描述】:

据我所知,创建动态 Java 代理需要有一个接口来为代理工作。然而,Hibernate 似乎无需为实体类编写接口即可管理其动态代理生成。它是如何做到的?来自 Hibernate 文档的唯一线索是,类必须至少有一个包可见的构造函数才能生成代理。

Hibernate 是否使用自定义类加载器进行运行时字节码工程?文档表明情况并非如此。那么他们如何围绕具体实体对象创建代理包装器呢?他们是否只是创建一些琐碎接口的代理而不考虑类型安全,然后根据需要进行转换?

【问题讨论】:

    标签: java hibernate proxy


    【解决方案1】:

    从 Hibernate 3.3 开始,默认的字节码提供程序现在是 Javassist 而不是 CGLib。

    Hibernate Core Migration Guide : 3.3

    【讨论】:

      【解决方案2】:

      Hibernate 使用hibernate.properties 中配置的字节码提供者,例如:

      hibernate.bytecode.provider=javassist
      

      【讨论】:

        【解决方案3】:

        查看课程javassist.util.proxy.ProxyFactory了解详情。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-11
          • 1970-01-01
          • 2014-11-05
          • 2011-09-30
          • 2011-12-14
          • 2011-07-07
          • 2021-11-27
          • 1970-01-01
          相关资源
          最近更新 更多