em.getTransaction().begin();
em.createNativeQuery("UPDATE "+table+" SET username=:username where id="+id+"",RootBean.class).setParameter("username", "aaaaaa").executeUpdate();
em.getTransaction().commit();我用JPA更新数据库怎么执行到第二句和第三句的时候那么慢啊,慢到根本顶不住,执行这两句怎么也要30秒,一点不夸张,请问各位高人这是怎么回事啊,是我配置文件写的不对?<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">

<persistence-unit name="study">

<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="123456" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8" />
<property name="hibernate.max_fetch_depth" value="3" />
<property name="hibernate.hbm2ddl.auto" value="update" />

<property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider"/>
<property name="c3p0.min_size" value="5" />
<property name="c3p0.max_size" value="30" />

<property name="c3p0.max_statement" value="50" />

<property name="c3p0.acquire_increment" value="1" />

<property name="c3p0.idle_test_period" value="120" />

<property name="c3p0.validate" value="true" /> 
<property name="c3p0.timeout" value="1800" /> 
</properties> </persistence-unit>
</persistence>

解决方案 »

  1.   

    em.createNativeQuery("UPDATE "+table+" SET username=:username where id="+id+"",RootBean.class).setParameter("username", "aaaaaa").executeUpdate();又是绑定变量又是原生sql,不知道你到底怎么想的。
      

  2.   

    这可能和用mysql有关系,换成oracle的话,就会快一些了。
      

  3.   

    我一直用的MYSQL这是第一次遇到这样的情况
      

  4.   

    算了不弄了,可能是项目太乱了,Spring配了JPA,我这个功能又单独写的JPA配置导致的吧