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>
我应该使用false
或static
什么值?
【问题讨论】:
【参考方案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来更改属性的值和获取属性的值