eclipselink.weaving 属性的值和区别是啥?

Posted

技术标签:

【中文标题】eclipselink.weaving 属性的值和区别是啥?【英文标题】:What are the values and their differences for eclipselink.weaving property?eclipselink.weaving 属性的值和区别是什么? 【发布时间】:2022-01-03 16:26:58 【问题描述】:

eclipselink.weaving 属性存在哪些值,它们的含义是什么?

在Spring中我们可以使用Java配置或者XML配置来创建entityManager,下面的例子是针对XML的:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaProperties">
        <props>
            <prop key="eclipselink.weaving">false</prop>
            ...
        </props>
    </property>
   ...
</bean>

我们有以下选择:

static - 静态编织以在构建时编织所有适用的类文件,以便您可以交付预编织的类文件。

false 是什么意思?我们可以将哪些选项传递给eclipselink.weaving 属性?

编辑: 我想在编译时配置编织。我正在使用这个 Maven 插件

<groupId>com.ethlo.persistence.tools</groupId>
<artifactId>eclipselink-maven-plugin</artifactId>

我应该使用falsestatic 什么值?

【问题讨论】:

【参考方案1】:

eclipselink.weaving 属性状态 3 值的 Javadoc:

"true" - 要求编织完成。如果会抛出异常 实体不是编织的 "false" - 强制不进行编织 "static" - 要求使用静态编织实用程序进行编织 实体

True aka Dynamic 意味着有一个代理将在 JVM 中编织实体。请参阅doc 在容器外部进行设置。 Static 告诉 EclipseLink 您已经在类加载器中的 java 类上完成了自己的编织(请参阅wiki 了解如何设置它),而 false 关闭任何需要编织类的选项(更改跟踪,一对一懒惰)等等)。

【讨论】:

那么如果我把false 编织没有完成,那到底是什么意思呢?该应用程序不会使用编织?或者它是否在构建期间完成?在构建期间配置编织时我应该使用static吗? false 只是告诉 EclipseLink 编织没有事先完成并且没有代理,所以它不能完成 - 这可以防止 EclipseLink 尝试访问不去的实体上的接口和其他方法到那里。其他两个值都告诉 eclipseLink 这些类已被编织 - 如果您希望 EclipseLink 在实体类上使用这些接口,请使用静态,并且您已经在它们上使用了静态编织(或自己添加它们)。 true 的值告诉代理在类加载器首次加载类时编织类。

以上是关于eclipselink.weaving 属性的值和区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

html/css/js-如何利用jq来更改属性的值和获取属性的值

Java反射得到属性的值和设置属性的值

如何有效地获取枚举中每个值的值和属性?

如何使用 xslt 获取 XML 的属性值和代码作为 html 的值

js中基本类型的值和引用类型的值的比较

vue3.0js 非prop属性的值和setup函数的使用