Java 使用JPA/Hibernate保持数据库连接
我正在应用程序中使用JPA和Hibernate。(使用PostgreSQL作为DBMS) 我执行了许多select语句,以获取按名称存储在DB中的项 我使用以下代码:Java 使用JPA/Hibernate保持数据库连接,java,hibernate,jpa,Java,Hibernate,Jpa,我正在应用程序中使用JPA和Hibernate。(使用PostgreSQL作为DBMS) 我执行了许多select语句,以获取按名称存储在DB中的项 我使用以下代码: //em is the javax.persistence.EntityManager Object. Query q = em.createQuery("Select i from Item i where i.name = :name"); q.setParameter("name", namePar
//em is the javax.persistence.EntityManager Object.
Query q = em.createQuery("Select i from Item i where i.name = :name");
q.setParameter("name", nameParam);
List<NavigationItem> results = q.getResultList();
//em是javax.persistence.EntityManager对象。
Query q=em.createQuery(“从i项中选择i,其中i.name=:name”);
q、 setParameter(“名称”,nameParam);
List results=q.getResultList();
所以,我的问题是,连接数据库、准备语句和关闭连接会浪费很多时间。
我使用EclipseTTP跟踪哪些方法花费的时间最多:(每分钟)
com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery():~22s
com.mchange.v2.c3p0.impl.NewProxyConnection().close():~16s
com.mchange.v2.c3p0.impl.NewProxyConnection().prepareStatement(字符串):~12s
com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource().GetConnetAction():~6s
com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close():~4s
查询的执行需要他的时间,这没关系,但我认为其他方法需要的时间比它们应该需要的更多。
如果我可以保持连接打开几次(或几百次)执行,应用程序就会快得多
所以我的问题是:我如何保持这个连接打开 评测确实会对性能产生一些影响,但是,报告她的执行时间异常缓慢,这是出乎意料的。我的意思是,你正在使用一个连接池,获得一个连接和关闭应该几乎是瞬间的,这些操作应该根本不是问题——这就是使用连接池的意义所在。而准备一份声明的时间高得离谱 有些地方出了问题,保持连接打开肯定不是解决方案(池应该可以正常工作)。但是没有足够的信息进行诊断。因此,请您添加以下方面的详细信息:
- 上下文(容器外?容器内?)
- 连接池配置
- 显示的代码段周围的代码李>
- 上下文(容器外?容器内?)
- 连接池配置
- 显示的代码段周围的代码李>