Java 将hibernate配置为临时使用“show sql=false”

Java 将hibernate配置为临时使用“show sql=false”,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个使用Maven、JPA、Eclipse和Jenkins的java程序。在开发过程中,我有设置 春天: jpa: show-sql:true 在我的application.yml文件中,它运行良好。现在,对于负载测试,我有大量的数据。如果我执行测试,它在Eclipse中工作正常,但在Maven中失败,因为SureFire插件在如此大的控制台输出上失败。我可以通过将控制台重定向到一个文件来让它工作,但这对Jenkins不起作用,如果我完全启动测试,它也不起作用,因为我想在控制台上看到结果。所

我有一个使用Maven、JPA、Eclipse和Jenkins的java程序。在开发过程中,我有设置

春天: jpa: show-sql:true

在我的application.yml文件中,它运行良好。现在,对于负载测试,我有大量的数据。如果我执行测试,它在Eclipse中工作正常,但在Maven中失败,因为SureFire插件在如此大的控制台输出上失败。我可以通过将控制台重定向到一个文件来让它工作,但这对Jenkins不起作用,如果我完全启动测试,它也不起作用,因为我想在控制台上看到结果。所以我想让这个设置显示sql被暂时关闭。我想它一定位于JPA/Hibernate配置类中的某个地方,但我还没有找到任何允许我更改它的组合

任何建议都将不胜感激, 斯蒂芬

我想我最接近它的是:

entityManager.setProperty( "hibernate.show_sql", false );
entityManager.setProperty( "spring.jpa.hibernate.show_sql", false );
entityManager.setProperty( "javax.persistence.hibernate.show_sql", false );

其中entityManager自动连接到组件。但是当读取这些属性时,返回的是来自完全不同名称空间的一些值,一些超时值,因此我认为我处于错误的位置…

我假设您也在使用spring,您可以使用自版本3以来可用的配置文件。有关详细信息,请参阅此链接:。您可以在运行时激活配置文件。例如,application-loadtest.yml将成为负载测试的配置

或者,您也可以将此属性添加为参数环境变量或命令行参数:

我希望这有帮助


在这方面,WiPu使用spring加载测试属性,这些属性与实际存在的开发/生产分离,因此在生产中根本没有问题。但在测试中,我有一个相当大的测试,其中包含许多类似的请求,以检查完整的队列并获得性能猜测。一般来说,我需要输出,但对于那个测试,我不需要。或者至少在前几次查询之后不会,因为我在日志中看到了系统。因此,作为结论,我理解,在运行期间/在Spring引导容器的启动和停止之间,真的不可能更改这些设置吗?如果不可能的话,我认为我应该考虑备选方案,然后我可能更喜欢使用前面提到过的概要文件。我可以尝试一下,但我自己没有尝试过,就是用新的属性来重建实体管理器。因此,您可以运行一些测试,然后使用启用/禁用的sql日志重建实体管理器。但是我没有正确的属性路径。我一直在读entityManager来检查里面有什么——收集信息通常不是一件坏事。但后来我发现完全不同的值,我在application.yml中设置的值和想要通过代码更改的值都不存在,所以我想这不是操作它们的正确方法,是吗?至少我不知道要使用什么属性路径。。。发现没有合适的文档可供使用。如果发现了这个:但它并没有真正让我达到目的…我很快在一个项目中检查了它,在那里我可以启用/禁用show_sql。我发现,在这个项目spring boot 2.X/hibernate 5.X中,LocalContainerEntityManager FactoryBean具有JPAPPropertyMap hibernate.show_sql=true。这个bean使用这些属性从hibernate:sessionfactorympl构建EntityManagerFactory实现。