cloudstore-memoizeit
Details
docker-compose.yml 11(+2 -9)
diff --git a/docker-compose.yml b/docker-compose.yml
index 7044a5f..2340e0f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -10,15 +10,8 @@ services:
command: bash -c 'while !</dev/tcp/database/3306; do sleep 5; done; bash run.sh'
environment:
- JAVA_OPTS=${JAVA_OPTS:-"-Xms4096m -Xmx6124m"}
- - TRACER_ENABLE=${TRACER_ENABLE:-true}
- - TRACER_MINIMUM_EXECUTION_TIME=${TRACER_MINIMUM_EXECUTION_TIME:-1}
- - TRACER_SERIALISE_INTERNALS=false
- - TRACER_VERBOSE=true
- - TRACER_TRACES=/caching-approaches-comparison/applications/traces/cloudstore
- - TRACER_LOG=/caching-approaches-comparison/applications/output/cloudstore-tracer.log
- - TRACER_BLACKLIST=/caching-approaches-comparison/applications/uncached/cloudstore/blacklist
- - TRACER_IGNORED_PACKAGES=/caching-approaches-comparison/applications/uncached/cloudstore/ignored
- - TRACER_WHITELIST=/caching-approaches-comparison/applications/uncached/cloudstore/whitelist
+ - CACHE_EVENTS=${CACHE_EVENTS:-/caching-approaches-comparison/applications/output/cloudstore-memoizeit-cache}
+ - CACHE_REGISTER_SIZE=false
volumes:
- application:/application
- /root/.m2:/root/.m2
pom.xml 56(+4 -52)
diff --git a/pom.xml b/pom.xml
index 649e568..8c4cd26 100644
--- a/pom.xml
+++ b/pom.xml
@@ -187,62 +187,14 @@
</dependency>
<dependency>
- <groupId>br.ufrgs.inf.prosoft.applicationtracer</groupId>
- <artifactId>ApplicationTracer</artifactId>
+ <groupId>br.ufrgs.inf.prosoft.cache</groupId>
+ <artifactId>Cache</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
-
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>aspectj-maven-plugin</artifactId>
- <version>1.11</version>
- <configuration>
- <showWeaveInfo>false</showWeaveInfo>
- <complianceLevel>1.8</complianceLevel>
- <source>1.6</source>
- <target>1.6</target>
- <Xlint>ignore</Xlint>
- <encoding>UTF-8</encoding>
- <verbose>false</verbose>
- <forceAjcCompile>true</forceAjcCompile>
- <sources/>
- <weaveDirectories>
- <weaveDirectory>${project.build.directory}/classes</weaveDirectory>
- </weaveDirectories>
- <aspectLibraries>
- <aspectLibrary>
- <groupId>br.ufrgs.inf.prosoft.applicationtracer</groupId>
- <artifactId>ApplicationTracer</artifactId>
- </aspectLibrary>
- </aspectLibraries>
- </configuration>
- <executions>
- <execution>
- <phase>process-classes</phase>
- <goals>
- <goal>compile</goal>
- </goals>
- </execution>
- </executions>
- <dependencies>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjrt</artifactId>
- <version>1.9.1</version>
- </dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjtools</artifactId>
- <version>1.9.1</version>
- </dependency>
- </dependencies>
- </plugin>
-
-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
@@ -341,8 +293,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
- <source>1.6</source>
- <target>1.6</target>
+ <source>1.8</source>
+ <target>1.8</target>
<!-- <compilerArgument>-Xlint:all</compilerArgument> -->
<!-- <showWarnings>true</showWarnings> -->
<!-- <showDeprecation>true</showDeprecation> -->
diff --git a/src/main/java/eu/cloudscale/showcase/db/dao/hibernate/impl/ShoppingCartDaoImpl.java b/src/main/java/eu/cloudscale/showcase/db/dao/hibernate/impl/ShoppingCartDaoImpl.java
index db1dfe5..210c680 100755
--- a/src/main/java/eu/cloudscale/showcase/db/dao/hibernate/impl/ShoppingCartDaoImpl.java
+++ b/src/main/java/eu/cloudscale/showcase/db/dao/hibernate/impl/ShoppingCartDaoImpl.java
@@ -12,6 +12,8 @@ package eu.cloudscale.showcase.db.dao.hibernate.impl;
import java.util.Date;
import java.util.List;
+import br.ufrgs.inf.prosoft.cache.SingleCache;
+
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
@@ -36,29 +38,33 @@ public class ShoppingCartDaoImpl extends DaoImpl<IShoppingCart> implements IShop
super(sessionFactory);
}
+public static SingleCache<Integer, IShoppingCart> findByIdCache = new SingleCache<>("ShoppingCartDaoImpl.findById");
+
@SuppressWarnings( "rawtypes" )
@Override
// @Transactional(readOnly=true)
public IShoppingCart findById(Integer shoppingId)
{
- Session session = getCurrentSession();
- String hql = "SELECT SC FROM ShoppingCart as SC WHERE SC.scId = :scId";
-
- Query query = session.createQuery(hql);
- query.setParameter( "scId", shoppingId );
-
-
- List res = query.list();
-
- if( res.isEmpty() )
- {
-// System.out.println("results are empty! " + query.getQueryString());
- return null;
- }
-
- ShoppingCart sc = (ShoppingCart) res.get( 0 );
- Hibernate.initialize( sc.getShoppingCartLines() );
- return sc;
+ return findByIdCache.computeIfAbsent(shoppingId, () -> {
+ Session session = getCurrentSession();
+ String hql = "SELECT SC FROM ShoppingCart as SC WHERE SC.scId = :scId";
+
+ Query query = session.createQuery(hql);
+ query.setParameter( "scId", shoppingId );
+
+
+ List res = query.list();
+
+ if( res.isEmpty() )
+ {
+ // System.out.println("results are empty! " + query.getQueryString());
+ return null;
+ }
+
+ ShoppingCart sc = (ShoppingCart) res.get( 0 );
+ Hibernate.initialize( sc.getShoppingCartLines() );
+ return sc;
+ }, 86400000);
}
@SuppressWarnings( "unchecked" )
diff --git a/src/main/java/eu/cloudscale/showcase/db/services/AService.java b/src/main/java/eu/cloudscale/showcase/db/services/AService.java
index 46672f1..a2d64fe 100755
--- a/src/main/java/eu/cloudscale/showcase/db/services/AService.java
+++ b/src/main/java/eu/cloudscale/showcase/db/services/AService.java
@@ -20,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.cache.annotation.Cacheable;
import org.springframework.transaction.annotation.Transactional;
+import br.ufrgs.inf.prosoft.cache.SingleCache;
+
import eu.cloudscale.showcase.db.BuyConfirmResult;
import eu.cloudscale.showcase.db.common.ContextHelper;
import eu.cloudscale.showcase.db.dao.IAddressDao;
@@ -533,10 +535,14 @@ public abstract class AService implements IService
customerDao.shrani( customer );
}
+public static SingleCache<Integer, IShoppingCart> findShoppingCartByIdCache = new SingleCache<>("AService.findShoppingCartById");
+
@Override
public IShoppingCart findShoppingCartById(Integer shoppingId)
{
- return shoppingCartDao.findById( shoppingId );
+ return findShoppingCartByIdCache.computeIfAbsent(shoppingId, () -> {
+ return shoppingCartDao.findById( shoppingId );
+ }, 86400000);
}
@Override