JPA Hibernate工作很慢

时间:2014-03-12 11:31:16

标签: performance hibernate jpa eclipselink

我正在学习JPA。 我尝试了Spring-JPA-Hibernate组合。 该应用程序工作,我得到了结果。 但是,虽然数据库中只有1条记录,但加载页面大约需要4到5分钟。 不太确定我做错了什么。 我用Google搜索了相同但我得到的只是性能优化建议,但我认为我遗漏了更基本的东西,因为我的表中只有1条记录。

以下是详细信息:

的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>

不确定我错过了什么。

1 个答案:

答案 0 :(得分:0)

我在Windows 7桌面上遇到此性能问题。 但是,在具有相同代码和数据库的Windows 8计算机上尝试时,我没有遇到此问题。

找不到根本原因,但现在解决了我的问题。