@SuppressWarnings({ "rawtypes", "unchecked" }) public List selectListWithRawParameter(String statement, Object parameter, boolean useCache) { statement = dbSqlSessionFactory.mapStatement(statement); List loadedObjects = sqlSession.selectList(statement, parameter); if (useCache) { return cacheLoadOrStore(loadedObjects); } else { return loadedObjects; } }
@Override public void flush() { determineUpdatedObjects(); // Needs to be done before the removeUnnecessaryOperations, as removeUnnecessaryOperations will remove stuff from the cache removeUnnecessaryOperations(); if (LOGGER.isDebugEnabled()) { debugFlush(); } flushInserts(); flushUpdates(); flushDeletes(); }
protected void flushInsertEntities(Class<? extends Entity> entityClass, Collection<Entity> entitiesToInsert) { if (entitiesToInsert.size() == 1) { flushRegularInsert(entitiesToInsert.iterator().next(), entityClass); } else if (Boolean.FALSE.equals(dbSqlSessionFactory.isBulkInsertable(entityClass))) { for (Entity entity : entitiesToInsert) { flushRegularInsert(entity, entityClass); } } else { flushBulkInsert(entitiesToInsert, entityClass); } }
public Object selectOne(String statement, Object parameter) { statement = dbSqlSessionFactory.mapStatement(statement); Object result = sqlSession.selectOne(statement, parameter); if (result instanceof Entity) { Entity loadedObject = (Entity) result; result = cacheLoadOrStore(loadedObject); } return result; }
protected void flushDeletes() { if (deletedObjects.size() == 0 && bulkDeleteOperations.size() == 0) { return; } // Handle in entity dependency order for (Class<? extends Entity> entityClass : dbSqlSessionFactory.getDeletionOrder()) { if (deletedObjects.containsKey(entityClass)) { flushDeleteEntities(entityClass, deletedObjects.get(entityClass).values()); deletedObjects.remove(entityClass); } flushBulkDeletes(entityClass); } // Next, in case of custom entities or we've screwed up and forgotten some entity if (deletedObjects.size() > 0) { for (Class<? extends Entity> entityClass : deletedObjects.keySet()) { flushDeleteEntities(entityClass, deletedObjects.get(entityClass).values()); flushBulkDeletes(entityClass); } } deletedObjects.clear(); }
@SuppressWarnings("rawtypes") protected List cacheLoadOrStore(List<Object> loadedObjects) { if (loadedObjects.isEmpty()) { return loadedObjects; } if (!(loadedObjects.get(0) instanceof Entity)) { return loadedObjects; } List<Entity> filteredObjects = new ArrayList<>(loadedObjects.size()); for (Object loadedObject : loadedObjects) { Entity cachedEntity = cacheLoadOrStore((Entity) loadedObject); filteredObjects.add(cachedEntity); } return filteredObjects; }
@Override public void delete(EntityImpl entity) { getDbSqlSession().delete(entity); }
@Override public void commit() { LOGGER.debug("firing event committing..."); fireTransactionEvent(TransactionState.COMMITTING, false); LOGGER.debug("committing the ibatis sql session..."); dbSqlSession.commit(); LOGGER.debug("firing event committed..."); fireTransactionEvent(TransactionState.COMMITTED, true); }
protected DbSqlSession createDbSqlSession() { return new DbSqlSession(this, Context.getCommandContext().getSession(EntityCache.class)); }