У меня есть проект, где я бы хотел использовать Hibernate для доступа к базе данных. В приложении используется JPA api.Hibernate с JPA, время соединения очень медленное
persistence.xml файл это
<persistence
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="hibernate.test"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.ejb.cfgfile" value="/hibernate/hibernate.cfg.xml"/>
</properties>
</persistence-unit>
</persistence>
Файл hibernate.cfg.xml следующая
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@//server:1521/DBNAME</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- <property name="hibernate.hbm2ddl.auto">verify</property> -->
<property name="hibernate.default_catalog">SYS_SOMETHING</property>
<property name="hibernate.default_schema">SYS_SOMETHING</property>
</session-factory>
</hibernate-configuration>
Проблема с этой установкой, что вызов entityManagerFactory = Persistence.createEntityManagerFactory("hibernate.test");
требуется около 25 секунд.
Если я переведу конфигурацию непосредственно в файл persistence.xml, соединение завершается через 1 секунду. Ошибка возникает как с базами данных Oracle, так и с MySQL.
я могу видеть задержку в файле журнала, ничего не происходит в это время
525 [pool-2-thread-1] INFO org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
21668 [pool-2-thread-1] DEBUG org.hibernate.service.internal.JaxbProcessor - cfg.xml document did not define namespaces; wrapping in custom event reader to introduce namespace information
Полный журнал: http://pastebin.com/4NjPpFPe
Эта задержка составляет лишь около 200 мс, если cfg.xml не используется ,
За это время память процесса не изменяется, использование процессора составляет 0%, а в соответствии с sysinternals Process Monitor - 0 взаимодействий.
Я хотел бы сохранить эту настройку, потому что hibernate.cfg.xml также используется для инструментов обратной инженерии и спящего режима.
Инструменты, используемые: java8 гибернации-4.3.8 ojdbc7 JPA-2,1
Благодарим Вас за любые предложения заранее.
Update:
Найдено решение, теперь я счастливый человек!
Рамка hibernate (или синтаксический анализатор xml, я не уверен) будет ждать http-запроса.
Чтобы устранить эту проблему, замените
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
с
<!DOCTYPE hibernate-configuration SYSTEM "-//Hibernate/Hibernate Configuration DTD 3.0//EN">
Задержка - это только один раз, когда начинается сервер? –
Каждый раз, когда приложение запускается, когда создается EntityManagerFactory. Администраторы EntityManager и запросы и т. Д. Все быстро. –
при запуске проекта и запуске сервера. сколько времени это займет? что я хочу сказать, что для запуска сервера, такого как Jboss или tomcat, или любого другого сервера, на котором вы работаете, это нормально, что требуется 25 секунд! – Fakher