Persistence.createEntityManagerFactory принимает возраст - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть тест DBUnit, который запускается нормально, но требует времени (4-5 минут) для создания фабрики диспетчера сущностей. Я использую JPA с Hibernate и SQL служить. Было бы очень полезно, если бы кто-нибудь мог пролить свет на это. Кажется, моя машина быстрее винит в этом Sql-сервер :) Вот мой установочный код.

@BeforeClass
public static void initEntityManager() throws Exception {
    emf = Persistence.createEntityManagerFactory("primary");
    em = emf.createEntityManager();
    tx = em.getTransaction();

    connection = new DatabaseConnection(((EntityManagerImpl) em).getSession().connection());
    dataset = getDataSet();
}

А вот и мой Persistence.xml

<persistence-unit name="primary" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.prototype.database.Customer</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <!-- Properties for Hibernate -->
        <property name="hibernate.hbm2ddl.auto" value="create-drop" />
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
        <property name="hibernate.connection.username" value="testuser" />
        <property name="hibernate.connection.password" value="testuser" />
        <property name="hibernate.connection.url" value="jdbc:sqlserver://localhost:1433;DatabaseName=testdb"/>
    </properties>
</persistence-unit>

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

Наконец удалось сократить время работы EntityManagerFactory с 255 секунд до 3 секунд в среднем.Обновлен hibernate-entitymanager с 3.4.0.GA до 3.6.3. Наконец-то!Модульное тестирование теперь выполняется, как юнит-тестирование, чуть менее 6 секунд.Постараюсь найти ответ на это улучшение для моих знаний.

0 голосов
/ 01 ноября 2011

Я бы порекомендовал вам попытаться найти узкое место с помощью:

1-Подключение к серверу SQLServer с помощью терминала.

2-Изменение соединения для ссылки на другую базу данных (MySQL, PostgreSQL, H2, ...).

Если оба работают без сбоев, значит, проблема в вашей конфигурации, и я не могу вам помочь, если у меня нет опыта работы с JPA.

...