Revision: 228
http://polepos.svn.sourceforge.net/polepos/?rev=228&view=rev
Author: carlrosenberger
Date: 2011-10-19 15:18:44 +0000 (Wed, 19 Oct 2011)
Log Message:
-----------
cr: Optimized JPA queries not to be recreated each time the parameter changes.
Using rollback() instead of commit() now for all query and read operations.
Modified Paths:
--------------
trunk/polepos/src/org/polepos/teams/jpa/ComplexJpa.java
trunk/polepos/src/org/polepos/teams/jpa/FlatObjectJpa.java
trunk/polepos/src/org/polepos/teams/jpa/InheritanceHierarchyJpa.java
trunk/polepos/src/org/polepos/teams/jpa/JpaCar.java
trunk/polepos/src/org/polepos/teams/jpa/JpaDriver.java
trunk/polepos/src/org/polepos/teams/jpa/NativeIdsJpa.java
trunk/polepos/src/org/polepos/teams/jpa/NestedListsJpa.java
Added Paths:
-----------
trunk/polepos/src/org/polepos/teams/jpa/JpaCarFactory.java
Modified: trunk/polepos/src/org/polepos/teams/jpa/ComplexJpa.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jpa/ComplexJpa.java 2011-10-18 15:39:05 UTC (rev 227)
+++ trunk/polepos/src/org/polepos/teams/jpa/ComplexJpa.java 2011-10-19 15:18:44 UTC (rev 228)
@@ -59,7 +59,7 @@
begin();
ComplexHolder0 holder = read(_rootId);
addToCheckSum(holder);
- commit();
+ rollback();
}
public ComplexHolder0 read(Object id) {
@@ -73,11 +73,11 @@
int firstInt = objects() * objects() + objects();
int lastInt = firstInt + (objects() * objects() * objects()) - 1;
int currentInt = firstInt;
+ String filter = "this.i2 = :param";
+ Query query = db().createQuery(
+ "SELECT this FROM " + ComplexHolder2.class.getSimpleName()
+ + " this WHERE " + filter);
for (int run = 0; run < selectCount; run++) {
- String filter = "this.i2 = :param";
- Query query = db().createQuery(
- "SELECT this FROM " + ComplexHolder2.class.getSimpleName()
- + " this WHERE " + filter);
query.setParameter("param", currentInt);
Collection result = (Collection) query.getResultList();
Iterator it = result.iterator();
@@ -102,7 +102,7 @@
currentInt = firstInt;
}
}
- commit();
+ rollback();
}
@Override
Modified: trunk/polepos/src/org/polepos/teams/jpa/FlatObjectJpa.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jpa/FlatObjectJpa.java 2011-10-18 15:39:05 UTC (rev 227)
+++ trunk/polepos/src/org/polepos/teams/jpa/FlatObjectJpa.java 2011-10-19 15:18:44 UTC (rev 228)
@@ -51,36 +51,36 @@
begin();
initializeTestId(setup().getSelectCount());
String filter = "this._string = :param";
+ Query query = db().createQuery(
+ "SELECT this FROM " + JpaIndexedObject.class.getSimpleName()
+ + " this WHERE " + filter);
while (hasMoreTestIds()) {
- Query query = db().createQuery(
- "SELECT this FROM " + JpaIndexedObject.class.getSimpleName()
- + " this WHERE " + filter);
doQuery(query, IndexedObject.queryString(nextTestId()));
}
- commit();
+ rollback();
}
public void queryIndexedInt() {
begin();
initializeTestId(setup().getSelectCount());
String filter = "this._int = :param";
+ Query query = db().createQuery(
+ "SELECT this FROM " + JpaIndexedObject.class.getSimpleName()
+ + " this WHERE " + filter);
while (hasMoreTestIds()) {
- Query query = db().createQuery(
- "SELECT this FROM " + JpaIndexedObject.class.getSimpleName()
- + " this WHERE " + filter);
doQuery(query, nextTestId());
}
- commit();
+ rollback();
}
public void update() {
begin();
String filter = "this._int = :param";
initializeTestId(setup().getUpdateCount());
+ Query query = db().createQuery(
+ "SELECT this FROM " + JpaIndexedObject.class.getSimpleName()
+ + " this WHERE " + filter);
while (hasMoreTestIds()) {
- Query query = db().createQuery(
- "SELECT this FROM " + JpaIndexedObject.class.getSimpleName()
- + " this WHERE " + filter);
query.setParameter("param", nextTestId());
Collection result = (Collection) query.getResultList();
JpaIndexedObject indexedObject = (JpaIndexedObject) result
@@ -95,10 +95,10 @@
begin();
String filter = "this._int = :param";
initializeTestId(setup().getUpdateCount());
+ Query query = db().createQuery(
+ "SELECT this FROM " + JpaIndexedObject.class.getSimpleName()
+ + " this WHERE " + filter);
while (hasMoreTestIds()) {
- Query query = db().createQuery(
- "SELECT this FROM " + JpaIndexedObject.class.getSimpleName()
- + " this WHERE " + filter);
query.setParameter("param", nextTestId());
Collection result = (Collection) query.getResultList();
JpaIndexedObject indexedObject = (JpaIndexedObject) result
Modified: trunk/polepos/src/org/polepos/teams/jpa/InheritanceHierarchyJpa.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jpa/InheritanceHierarchyJpa.java 2011-10-18 15:39:05 UTC (rev 227)
+++ trunk/polepos/src/org/polepos/teams/jpa/InheritanceHierarchyJpa.java 2011-10-19 15:18:44 UTC (rev 228)
@@ -45,23 +45,23 @@
@Override
public void read(){
- begin();
+ begin();
readExtent(InheritanceHierarchy4.class);
- commit();
+ rollback();
}
@Override
public void query(){
- begin();
+ begin();
int count = setup().getSelectCount();
String filter = "this.i2 = :param";
+ Query query = db().createQuery(
+ "SELECT this FROM " + InheritanceHierarchy4.class.getSimpleName()
+ + " this WHERE " + filter);
for (int i = 1; i <= count; i++) {
- Query query = db().createQuery(
- "SELECT this FROM " + InheritanceHierarchy4.class.getSimpleName()
- + " this WHERE " + filter);
doQuery(query, i);
}
- commit();
+ rollback();
}
@Override
Modified: trunk/polepos/src/org/polepos/teams/jpa/JpaCar.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jpa/JpaCar.java 2011-10-18 15:39:05 UTC (rev 227)
+++ trunk/polepos/src/org/polepos/teams/jpa/JpaCar.java 2011-10-19 15:18:44 UTC (rev 228)
@@ -65,6 +65,13 @@
e.printStackTrace();
}
}
+
+ protected void reinitialize() throws IOException{
+ if(mFactory != null){
+ mFactory.close();
+ }
+ initialize();
+ }
private String persistenceUnitName() {
if(_dbName == null){
@@ -82,13 +89,21 @@
@Override
public String name() {
-
if(isSQL()){
return Jpa.settings().getName(_name) + "/" +Jdbc.settings().getName(_dbName)+"-"+Jdbc.settings().getVersion(_dbName);
}
return Jpa.settings().getVendor(_name) + "/" + Jpa.settings().getName(_name)+"-"+Jpa.settings().getVersion(_name);
-
}
+
+ public boolean canRecreateDatabase(){
+ return false;
+ }
+
+ public void recreateDatabase(){
+ // do nothing, override in specific implementations
+ }
+
+
}
Added: trunk/polepos/src/org/polepos/teams/jpa/JpaCarFactory.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jpa/JpaCarFactory.java (rev 0)
+++ trunk/polepos/src/org/polepos/teams/jpa/JpaCarFactory.java 2011-10-19 15:18:44 UTC (rev 228)
@@ -0,0 +1,29 @@
+/*
+This file is part of the PolePosition database benchmark
+http://www.polepos.org
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this program; if not, write to the Free
+Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+MA 02111-1307, USA. */
+
+
+package org.polepos.teams.jpa;
+
+import java.io.*;
+
+public interface JpaCarFactory {
+
+ JpaCar newInstance(JpaTeam team, String name, String dbName, String color) throws IOException ;
+
+}
Property changes on: trunk/polepos/src/org/polepos/teams/jpa/JpaCarFactory.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/polepos/src/org/polepos/teams/jpa/JpaDriver.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jpa/JpaDriver.java 2011-10-18 15:39:05 UTC (rev 227)
+++ trunk/polepos/src/org/polepos/teams/jpa/JpaDriver.java 2011-10-19 15:18:44 UTC (rev 228)
@@ -65,6 +65,10 @@
db().getTransaction().commit();
}
+ public void rollback(){
+ db().getTransaction().rollback();
+ }
+
public void store(Object obj){
db().persist(obj);
}
Modified: trunk/polepos/src/org/polepos/teams/jpa/NativeIdsJpa.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jpa/NativeIdsJpa.java 2011-10-18 15:39:05 UTC (rev 227)
+++ trunk/polepos/src/org/polepos/teams/jpa/NativeIdsJpa.java 2011-10-19 15:18:44 UTC (rev 228)
@@ -49,7 +49,7 @@
addToCheckSum(pilot.getPoints());
}
}
- commit();
+ rollback();
}
private void storePilot(int idx) {
Modified: trunk/polepos/src/org/polepos/teams/jpa/NestedListsJpa.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jpa/NestedListsJpa.java 2011-10-18 15:39:05 UTC (rev 227)
+++ trunk/polepos/src/org/polepos/teams/jpa/NestedListsJpa.java 2011-10-19 15:18:44 UTC (rev 228)
@@ -22,12 +22,11 @@
import java.util.*;
-import javax.persistence.Query;
+import javax.persistence.*;
import org.polepos.circuits.nestedlists.*;
import org.polepos.framework.*;
-import org.polepos.teams.jpa.data.ListHolder;
-import org.polepos.teams.jpa.data.InheritanceHierarchy4;
+import org.polepos.teams.jpa.data.*;
/**
* @author Christian Ernst
@@ -50,7 +49,7 @@
addToCheckSum(listHolder);
}
});
- commit();
+ rollback();
}
private ListHolder root() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|