1
我正在學習JPA。 我嘗試了Spring-JPA-Hibernate組合。 該應用程序的工作原理和我得到的結果。 但是,儘管數據庫中只有1條記錄,但要花4到5分鐘才能加載頁面。 不太確定我做錯了什麼。 我谷歌搜索相同,但我得到的是性能優化的建議,但我想我失去了更基本的東西,因爲在我的表中只有1條記錄。JPA休眠工作非常緩慢
下面是詳細信息:
的persistence.xml
<?xml version="1.0" encoding="UTF-8" ?>
<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_2_0.xsd"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="bike_unit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:comp/env/jdbc/testdb123</jta-data-source>
<class>bike.Bike</class>
<class>bike.Company</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/bike"/>
<property name="javax.persistence.jdbc.user" value="abc"/>
<property name="javax.persistence.jdbc.password" value="abc"/>
</properties>
</persistence-unit>
</persistence>
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>bikeDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>bikeDispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/home.html</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<resource-env-ref>
<resource-env-ref-name>jdbc/testdb123</resource-env-ref-name>
<resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
</resource-env-ref>
</web-app>
的context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/testdb123" auth="Container"
type="javax.sql.DataSource"
username="abc" password="abc"
driverClassName="org.apache.derby.jdbc.ClientDriver"
url="jdbc:derby://localhost:1527/bike" />
</Context>
我正在使用Spring 3和Hibernate 3 jar文件。 我嘗試用Eclipselink替換Hibernate,並且應用程序完美無缺。它只有當我用Hibernate使用JPA時,我有緩慢問題。
這裏是我的EclipseLink和Hibernate使用的罐子:
的EclipseLink:
- eclipselink.jar
- javax.persistence_2.1.0.v201304241213.jar
- javax.persistence.source_2 .1.0.v201304241213.jar
休眠:
- EJB3-persistence.jar
- 休眠-annotations.jar
- 休眠-公地annotations.jar
用的EclipseLink,這是我的persistance.xml的樣子:
<?xml version="1.0" encoding="UTF-8" ?>
<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_2_0.xsd"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="bike_unit" transaction-type="RESOURCE_LOCAL">
<class>bike.Bike</class>
<class>bike.Company</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/bike" />
<property name="javax.persistence.jdbc.user" value="abc" />
<property name="javax.persistence.jdbc.password" value="abc" />
</properties>
</persistence-unit>
</persistence>
不知道我缺少什麼。
很難提出什麼可能是確切的原因,但我建議啓用休眠日誌記錄,看看你是否能找到一些線索。 VisualVM也值得使用。 – Shailendra
認識到它是一直耗用的Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME)方法。謝謝@Shailendra給我一個方向看。 –
很高興幫助!通常,對於Web應用程序,實體管理器工廠將爲每個數據庫創建一次,每個單獨的請求將自己的實體管理器實例。 – Shailendra