我希望在开发期间将EclipseLink生成的SQL输出到控制台.但是,我只能使用日志级别FINE来执行此操作.我有一个由许多类组成的复杂域模型,因为EclipseLink输出其对整个模型的分析,因此当日志详细程度在FINE级别时,部署需要相当多的时间.
有没有办法获得SQL而不诉诸日志级别FINE(像Hibernate一样)?
给定一个使用 的交换WebClient,并按自定义过滤ExchangeFilterFunction:
@Override
public Mono<ClientResponse> filter(ClientRequest request, ExchangeFunction next) {
return next.exchange(request)
.doOnSuccess(response -> {
// ...
});
}
Run Code Online (Sandbox Code Playgroud)
尝试使用多次访问响应正文response.bodyToMono()将导致底层 HTTP 客户端连接器抱怨只允许一个接收者。AFAIK,没有办法访问主体的发布者来获取cache()其信号(我不确定这在资源方面是一个好主意),也没有办法以response这样的方式改变或装饰对象:允许访问其主体(就像ServerWebExchange在服务器端一样)。
这是有道理的,但我想知道是否有任何方法可以通过像这样的过滤器形式订阅响应正文的发布者。我的目标是记录给定实例发送/接收的请求/响应WebClient。
我是反应式编程的新手,所以如果这里有任何明显的禁忌,请解释一下:)
我非常了解Maven,但我通常使用Netbeans,这使得部署Java EE应用程序非常容易 - 并处理任何更改的热部署.
我现在使用的团队使用Eclipse作为他们选择的IDE,但他们之前都没有使用过Maven项目.所以我需要知道如何正确地将Eclipse的项目方面添加到我们拥有的maven项目中,以便通过WTP支持(热)部署.我们正在使用Weblogic 12c进行这项特殊的努力.
我们的项目布局非常简单:
super-project (pom)
project-ear (pom)
project-ejb (pom)
project-web (pom)
Run Code Online (Sandbox Code Playgroud)
感谢您指点我的任何资源.
我正在研究访问HTTP请求和响应主体的最佳方法,以便在Spring反应式应用程序中进行跟踪.
对于以前的版本,我们利用Servlet过滤器和Servlet请求包装器来使用传入请求的输入流并保存它的副本以进行跟踪的异步处理(我们将它们发送到Elasticsearch).
但是对于一个Spring响应式应用程序(使用webflux),我想知道在解码之前访问请求的最合适方式是什么.有什么想法吗?
在Hibernate是我的持久性提供程序的项目中,我可以使用'join fetch'表达式发出查询,而Hibernate将生成反映它的SQL:包含使用有效比较路径的连接表达式的SQL.
然而,EclipseLink以丑陋的笛卡尔计划发布SQL,这严重损害了性能.在阅读本文时,它提到急切的提取可能会产生笛卡儿计划,但它会方便地忘记其他提供程序(Hibernate)可以优化它.
那么,是否有可能指示EclipseLink优化这些查询?我相信通过使用@FetchJoin注释可以优化很少的关系,但我希望找到一些不包括在域模型上传播ORM特定注释的东西.
举个例子,这是我作为JPQL发布的(动态)查询:
String query = "select w from WorkOrder w " +
"inner join fetch w.type " +
"inner join fetch w.details " +
"inner join fetch w.project " +
"inner join fetch w.priority " +
"inner join fetch w.networkElement ";
Run Code Online (Sandbox Code Playgroud)
这是EclipseLink输出:
SELECT t1.ID, t1.CREATION, ... (the fetch fields here)
FROM swa_network_element t5, swa_priorities t4, swa_dispatch_project t3, swa_work_order_detail t2, swa_work_orders t1, swa_work_order_type t0
WHERE ((t1.alpha_id LIKE '%TSK%') AND (((((t0.ID = t1.TYPE_ID) AND (t2.worder_id = t1.ID)) …Run Code Online (Sandbox Code Playgroud) eclipselink ×2
jpa ×2
orm ×2
eclipse ×1
java ×1
java-ee-6 ×1
maven ×1
performance ×1
spring ×1