当项目中不存在时,OpenJPA执行预准备语句

时间:2012-05-16 09:13:06

标签: openjpa

我有一个web项目,我在其中使用OpenJAP进行数据库连接。我已经配置了persistence.xml,我可以连接到数据库并检索数据。但是在控制台输出中我看到了这个条目

1953  OpenJPA  TRACE  [main] openjpa.jdbc.SQL - <t 31156635, conn 6888942> executing prepstmnt 9690924 

UPDATE student 
    SET scourse = ?, sname = ?, sroll = ? 
    WHERE id = ? 
[params=?, ?, ?, ?]

在我的整个项目中,到目前为止,我还没有添加任何准备好的声明或任何更新声明。我想知道为什么OpenJPA执行此声明以及当我获取数百万的大数据时会有什么性能影响?

1 个答案:

答案 0 :(得分:0)

我已将以下代码添加到build.xml文件

<!-- ***************************************************************************************************************** -->
<!-- DO NOT DELETE FOLLOWING CODE. THIS IS ADDED FOR ENCHANCING THE CLASSES AT COMPILE TIME. IT IS REQUIRED BY OPENJPA -->
<!-- Define the classpath to include the necessary files. -->
<!-- ex. openjpa jars, persistence.xml, orm.xml, and target classes  -->
<path id="jpa.enhancement.classpath">
    <!-- Assuming persistence.xml/orm.xml are in WebContent/WEB-INF/classes/META-INF -->
    <pathelement location="WebContent/WEB-INF/classes" />

    <!-- Location of the .class files -->
    <pathelement location="build/classes" />

    <!-- Add the openjpa jars -->
    <fileset dir=".">
        <include name="**/lib/*.jar" />
    </fileset>
</path>
<!-- define the openjpac task; this can be done at the top of the -->
<!-- build.xml file, so it will be available for all targets -->
<taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask" classpathref="jpa.enhancement.classpath" />

<!-- invoke enhancer on all .class files below the model directory -->
<openjpac>
    <classpath refid="jpa.enhancement.classpath" />
    <fileset dir=".">
        <include name="**/model/*.class" />
    </fileset>
</openjpac>
<echo message="Enhancement complete" />
<!-- ***************************************************************************************************************** -->

添加此项并设置eclipse以使用此build.xml文件来创建WAR文件。对象正在增强,我没有在我的日志中获得“执行准备好的语句”跟踪它也没有执行额外的“更新”语句。