使用Hibernate和H2的Java 1.5 JPA创建EntityManagerFactory很慢

时间:2014-03-25 06:25:53

标签: java hibernate jpa h2 java-5

我试图在Junit中测试我们的一些数据库层。

我遇到的问题是Persistence.createEntityManagerFactory()采用> 200秒!谷歌搜索H2,JPA,Hibernate与createEntityManagerFactory的某些组合没有任何用处。

这是我的测试:

import static org.junit.Assert.assertTrue;

import java.util.Date;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.junit.Test;

public class MinimalSet {
    @Test
    public void TestNamedQuery() {
        Date startTime = new Date();

        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("TestPersistence");
        EntityManager entityManager = entityManagerFactory.createEntityManager();

        Date endTime = new Date();

        // Did it take less than 10 seconds?
        assertTrue(((endTime.getTime() - startTime.getTime()) / 1000.0) < 10.0);
    }
}

这是我的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="TestPersistence" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
            <property name="hibernate.connection.url" value="jdbc:h2:mem:test" />
            <property name="hibernate.connection.driver_class" value="org.h2.Driver" />
            <property name="hibernate.connection.username" value="root" />
            <property name="hibernate.connection.password" value="" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="false" />
        </properties>
    </persistence-unit>
</persistence>

我没有使用任何其他配置文件(例如hibernate.cfg.xml)。

我很感激为什么需要这么长时间。

感谢。

更新

它已开始快速运行(<2秒)。 所以我认为它正在等待一些事件。这有没有与网络对话?

0 个答案:

没有答案