通过 Spring 的 application.properties 传递 EclipseLink 属性?

Passing EclipseLink properties through Spring's application.properties?

我们使用 EclipseLink 作为我们的 JPA 供应商。

我在网上找到了很多关于persistence.xml解决方案的答案,但实际上我试图避免使用XML配置。我什至读到 SpringBoot 现在甚至不再查找该文件,除非被告知。为此,我想尝试坚持 application.properties.

似乎 Hibernate 通过传递 spring.jpa.hibernate 属性得到了不错的支持。但是,当涉及到 EclipseLink 时,我仍然犹豫不决。

我正在尝试:

  1. 将 EclipseLink 日志设置为 ALL 以帮助我进行调试。
  2. 激活 EclipseLink Batch-Writing 看看我是否可以提高我的应用程序的性能。

这是我现在的 application.properties:

logging.level.root=info
spring.jpa.show-sql=true

eclipselink.jdbc.batch-writing=JDBC
eclipselink.jdbc.batch-writing.size=500

我尝试将 some of these answers 的值插入 application.properties,但它并没有真正帮助我查看 SQL 命令。我能看到一些 SQL 的唯一方法是使用 spring.jpa.show-sql=true,这让我相信它并不像我希望避免使用 persistence.xml 那样微不足道。这也让我怀疑 eclipselink.jdbc.batch-writing 属性实际上也没有被 EclipseLink 识别。


我们确实通过 logback 登录。也许这个 logback.xml 文件内容可能会有帮助:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="2 seconds" debug="false">

    <appender name="log.console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="com.foo.bar.app.LoggerLayoutEncoder">
            <pattern>%d{HH:mm:ss.SSSS} -\t%highlight(%-5level)\t%17.-17tenantContext\t%15.-15userContext\t%50.-50requestContext\tThread[%26.-26thread]%n\t\t\t\tLogger[%green(%36.36(%logger{36}))]\tMsg[%highlight(%msg)]%n</pattern>
        </encoder>
    </appender>

    <appender name="Sentry" class="io.sentry.logback.SentryAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>

    <root>
        <level value="INFO" />
        <appender-ref ref="log.console" />
        <appender-ref ref="Sentry" />     
    </root>

</configuration>

你可以试试这个:- #spring.jpa.properties.eclipselink.logging.level.sql: 全部

This也可以帮到你,这里定义了几个EclipseLink的属性。

原来这是我公司内部框架中的一个错误,它阻止了 eclipselink 属性被 EntityManager.

继承

请无视