在休眠应用程序中设置字节码提供程序的问题

2024-01-06

我正在尝试添加 cglib 作为默认字节代码提供程序。我在用hibernate.cfg.xml文件来配置会话工厂。

<property name="hibernate.bytecode.provider">cglib</property>

我的配置文件中的上述代码行不会对行为进行任何更改。它仍然设置javassist作为字节码提供者。

事实证明,“javaassist”被设置为默认提供程序。此配置在环境表单 hibernate.properties 文件中更新。除了环境类的静态初始化程序之外,我没有在任何地方找到任何对字节码提供程序创建者方法的引用。

是否有任何明确的方法可以从 xml 配置文件中分配默认字节代码生成器。


Environment javadoc http://docs.jboss.org/hibernate/core/3.5/api/index.html?org/hibernate/cfg/Environment.html says:

Hibernate 有两个属性范围:

  • 工厂级属性可以在 SessionFactory 实例化时传递给它。每个实例可能有不同的属性值。如果未指定属性,工厂将调用Environment.getProperties()。
  • 系统级属性由所有工厂实例共享,并且始终由环境属性确定。

唯一的系统级属性是

  • hibernate.jdbc.use_streams_for_binary
  • hibernate.cglib.use_reflection_optimizer

环境属性通过调用 System.getProperties() 填充,然后从名为 /hibernate.properties 的资源(如果存在)填充。系统属性覆盖 hibernate.properties 中指定的属性。

然而,这并不完全正确。查看源代码后就清楚了hibernate.bytecode.provider也是系统级属性,因此不能在中指定hibernate.cfg.xml, 只有在hibernate.properties.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在休眠应用程序中设置字节码提供程序的问题 的相关文章

随机推荐