Glassfish 3.1上的Java EE(EJB + JSF)应用程序和Hibernate(3.6.8.Final和4.1.7.Final)的性能非常低下0.2。发送大约300个选择查询大约需要20秒。这是无法接受的。Glassfish 3.1.2和Java EE + Hibernate的性能很低
我在JBoss和TomEE上部署了完全相同的应用程序。在那里,同样的300个选择查询大约需要1.5秒。
我在谷歌搜索一些答案,也许hibernate.show_sql
是true
或hibernate.hbm2ddl
使应用程序很慢。但事实并非如此。我关掉了hibernate.show_sql
但是没关系。而且,这些选项在JBoss和TomEE版本中都是正确的,它的工作速度提高了10倍! 我认为这是Glasfish和Hibernate之间的问题。但是我有下一个具有相同业务逻辑的应用程序,与Hibernate提供的EntityManager相同的DAO,但是使用Spring进行配置。而且表现很棒。这很奇怪,不是吗?
persistence.xml
从缺陷的版本:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="jee_project" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/PostgreSQL</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="false"/>
<property name="current_session_context_class" value="thread"/>
</properties>
</persistence-unit>
</persistence>
Glassfish的JDBC配置
<jdbc-connection-pool driver-classname="" datasource-classname="org.postgresql.ds.PGConnectionPoolDataSource" res-type="javax.sql.ConnectionPoolDataSource" description="" name="PostgreSQLPool">
<property name="User" value="postgresql"></property>
<property name="DatabaseName" value="qazxsw"></property>
<property name="LogLevel" value="0"></property>
<property name="Password" value="1234"></property>
<property name="ServerName" value="localhost"></property>
<property name="Ssl" value="false"></property>
<property name="ProtocolVersion" value="0"></property>
<property name="TcpKeepAlive" value="false"></property>
<property name="SocketTimeout" value="0"></property>
<property name="PortNumber" value="5432"></property>
<property name="LoginTimeout" value="0"></property>
<property name="UnknownLength" value="2147483647"></property>
<property name="PrepareThreshold" value="5"></property>
</jdbc-connection-pool>
<jdbc-resource pool-name="PostgreSQLPool" description="" jndi-name="jdbc/PostgreSQL__pm"></jdbc-resource>
<jdbc-resource pool-name="PostgreSQLPool" description="" jndi-name="jdbc/PostgreSQL__nontx"></jdbc-resource>
池中连接的最小/最大数量是多少? – ewernli
初始和最小池大小:8,初始和最小池大小:32 – LancerX
我相信该文件是'persistence.xml'而不是'persistance.xml'。 –