use*_*702 31 postgresql spring spring-data spring-data-jpa spring-boot
我有一个简单的Spring Boot应用程序,它连接到PostgreSQL数据库并充当JSON服务.不知怎的,创业公司变得非常慢,见时间10:37:10和10:38:00:
2015-05-09 10:37:09.649 INFO 20880 --- [lication.main()] o.apache.catalina.core.StandardService : Starting service Tomcat
2015-05-09 10:37:09.651 INFO 20880 --- [lication.main()] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.0.20
2015-05-09 10:37:09.767 INFO 20880 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2015-05-09 10:37:09.767 INFO 20880 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2970 ms
2015-05-09 10:37:09.979 INFO 20880 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2015-05-09 10:37:09.985 INFO 20880 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2015-05-09 10:37:10.105 INFO 20880 --- [lication.main()] o.s.j.d.DriverManagerDataSource : Loaded JDBC driver: org.postgresql.Driver
2015-05-09 10:37:10.214 INFO 20880 --- [lication.main()] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2015-05-09 10:37:10.233 INFO 20880 --- [lication.main()] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [
name: default
...]
2015-05-09 10:37:10.585 INFO 20880 --- [lication.main()] org.hibernate.Version : HHH000412: Hibernate Core {4.3.8.Final}
2015-05-09 10:37:10.587 INFO 20880 --- [lication.main()] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2015-05-09 10:37:10.589 INFO 20880 --- [lication.main()] org.hibernate.cfg.Environment : HHH000021: Bytecode provider name : javassist
2015-05-09 10:37:10.968 INFO 20880 --- [lication.main()] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
2015-05-09 10:38:00.023 INFO 20880 --- [lication.main()] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
2015-05-09 10:38:00.041 INFO 20880 --- [lication.main()] o.h.e.jdbc.internal.LobCreatorBuilder : HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
2015-05-09 10:38:00.274 INFO 20880 --- [lication.main()] o.h.h.i.ast.ASTQueryTranslatorFactory : HHH000397: Using ASTQueryTranslatorFactory
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?我能做些什么来诊断问题吗?
Rob*_*ily 50
对于Spring Boot,您可以在application.properties文件中进行设置:
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
Run Code Online (Sandbox Code Playgroud)
我还发现我需要设置另一个属性,否则我会收到错误"org.hibernate.HibernateException:当'hibernate.dialect'没有设置"时,对DialectResolutionInfo的访问不能为空.为了纠正我设置此属性:
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
Run Code Online (Sandbox Code Playgroud)
这将我们的启动时间从大约100秒减少到12秒.
用问题解决了
properties.setProperty("hibernate.temp.use_jdbc_metadata_defaults", "false");
Run Code Online (Sandbox Code Playgroud)
谢谢大家.
application.yml属性设置的贡献版本。
spring:
jpa:
properties:
hibernate:
temp:
use_jdbc_metadata_defaults: false
Run Code Online (Sandbox Code Playgroud)
您在本地服务器上运行测试吗?也许数据库服务器 URL 存在一些问题,例如不可解析的主机名或 IPv6 DNS 条目,使用来自另一个应用程序的相同连接字符串(例如http://squirrel-sql.sourceforge.net/)进行连接可以确认问题。
第一次创建数据库连接时(加载驱动程序或执行连接时)肯定会记录延迟。
| 归档时间: |
|
| 查看次数: |
17241 次 |
| 最近记录: |