我想构建一个连接数据库的程序。原则上,我的代码有效。我使用“Hibernante-4.3.1”和postgresql-driver“postgresql-9.3-1100.jdbc41.jar”。
我的persistence.xml如下所示:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence" version="1.0">
<persistence-unit name="******" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.connection.username" value="******"/>
<property name="hibernate.connection.password" value="******"/>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/*******"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>
对于localhost来说,它速度非常快,但如果我想通过互联网连接到外部服务器,建立连接大约需要30-60秒。一旦初始化,所有后续请求都执行得足够快,但第一次调用正在取消长时间。
我可以将整个项目重组为WEB项目,并通过JTA创建JBoss数据源。这样,连接在程序启动之前建立,一切都会好的。但如果我不必那样做,我会更喜欢它。这样连接的正确方法是什么?
编辑:更多信息:需要很长时间的行是:
javax.persistence.EntityManagerFactory emf = Persistence.createEntityManagerFactory("OneGramService");
问候, Rhodarus
答案 0 :(得分:1)
尝试将hibernate.temp.use_jdbc_metadata_defaults
属性设置为false。