2012-05-16 39 views
0

我有使用OpenJAP進行數據庫連接的Web項目。我配置了persistence.xml,我可以連接到數據庫並檢索數據。但在控制檯輸出我看到這個條目OpenJPA在項目中不存在的情況下執行預準備語句

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

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

在我的整個項目,直到現在我還沒有添加任何準備好的聲明或任何更新聲明。我想知道爲什麼OpenJPA執行這個語句,當我獲取數百萬的大數據時,性能意味着什麼?

+0

也許項目在文件系統中的某處引用了一些配置文件?您是如何在您的項目中搜索上述聲明的?也許搜索整個機器。此外,如果可能的話,調試將提供關於更新聲明來自何處的提示 – Victor

+0

否聲明不存在。該語句根據所訪問的表進行更改,這意味着如果表是「學生」,則執行上述語句;否則,如果表是「用戶」,則執行具有「用戶」表的列的更新語句。這是OpenJPA中非常有名的問題。這與增強數據對象類文件有關。一旦完成,我正在嘗試一些事情,它正在工作,然後我會發布答案。 – Natraj

+0

非常感謝。 – Victor

回答

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文件。對象得到了增強,我沒有在日誌中看到「執行準備好的語句」跟蹤,也沒有執行額外的「更新」語句。

相關問題