Class DbSqlSession
- java.lang.Object
-
- org.camunda.bpm.engine.impl.db.AbstractPersistenceSession
-
- org.camunda.bpm.engine.impl.db.sql.DbSqlSession
-
- All Implemented Interfaces:
PersistenceSession,Session
- Direct Known Subclasses:
BatchDbSqlSession,SimpleDbSqlSession
public abstract class DbSqlSession extends AbstractPersistenceSession
- Author:
- Tom Baeyens, Joram Barrez, Daniel Meyer, Sebastian Menski, Roman Smirnov
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.StringconnectionMetadataDefaultCatalogprotected java.lang.StringconnectionMetadataDefaultSchemaprotected DbSqlSessionFactorydbSqlSessionFactorystatic java.lang.String[]JDBC_METADATA_TABLE_TYPESprotected static EnginePersistenceLoggerLOGstatic java.lang.String[]PG_JDBC_METADATA_TABLE_TYPESprotected org.apache.ibatis.session.SqlSessionsqlSession-
Fields inherited from class org.camunda.bpm.engine.impl.db.AbstractPersistenceSession
listeners
-
-
Constructor Summary
Constructors Constructor Description DbSqlSession(DbSqlSessionFactory dbSqlSessionFactory)DbSqlSession(DbSqlSessionFactory dbSqlSessionFactory, java.sql.Connection connection, java.lang.String catalog, java.lang.String schema)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected java.lang.StringaddSqlStatementPiece(java.lang.String sqlStatement, java.lang.String line)protected voidbulkDeletePerformed(DbBulkOperation operation, int rowsAffected, java.lang.Exception failure)protected voidbulkOperationPerformed(DbBulkOperation operation, int rowsAffected, java.lang.Exception failure)protected voidbulkUpdatePerformed(DbBulkOperation operation, int rowsAffected, java.lang.Exception failure)voidclose()voidcommit()protected voidconfigureFailedDbEntityOperation(DbEntityOperation operation, java.lang.Exception failure)voiddbSchemaCheckVersion()protected voiddbSchemaCreateCmmn()protected voiddbSchemaCreateCmmnHistory()protected voiddbSchemaCreateDmn()protected voiddbSchemaCreateDmnHistory()protected voiddbSchemaCreateEngine()protected voiddbSchemaCreateHistory()protected voiddbSchemaCreateIdentity()protected voiddbSchemaDropCmmn()protected voiddbSchemaDropCmmnHistory()protected voiddbSchemaDropDmn()protected voiddbSchemaDropDmnHistory()protected voiddbSchemaDropEngine()protected voiddbSchemaDropHistory()protected voiddbSchemaDropIdentity()protected voidentityDeletePerformed(DbEntityOperation operation, int rowsAffected, java.lang.Exception failure)protected voidentityInsertPerformed(DbEntityOperation operation, int rowsAffected, java.lang.Exception failure)protected voidentityUpdatePerformed(DbEntityOperation operation, int rowsAffected, java.lang.Exception failure)protected intexecuteDelete(java.lang.String deleteStatement, java.lang.Object parameter)protected voidexecuteInsertEntity(java.lang.String insertStatement, java.lang.Object parameter)voidexecuteMandatorySchemaResource(java.lang.String operation, java.lang.String component)intexecuteNonEmptyUpdateStmt(java.lang.String updateStmt, java.lang.Object parameter)voidexecuteSchemaResource(java.lang.String schemaFileResourceName)voidexecuteSchemaResource(java.lang.String operation, java.lang.String component, java.lang.String resourceName, boolean isOptional)protected abstract voidexecuteSelectForUpdate(java.lang.String statement, java.lang.Object parameter)java.util.List<java.lang.Object>executeSelectList(java.lang.String statement, java.lang.Object parameter)intexecuteUpdate(java.lang.String updateStatement, java.lang.Object parameter)voidflush()java.util.List<org.apache.ibatis.executor.BatchResult>flushBatchOperations()voidflushOperations()DbSqlSessionFactorygetDbSqlSessionFactory()protected java.lang.StringgetDbVersion()java.lang.StringgetResourceForDbOperation(java.lang.String directory, java.lang.String operation, java.lang.String component)org.apache.ibatis.session.SqlSessiongetSqlSession()java.util.List<java.lang.String>getTableNamesPresent()protected java.util.List<java.lang.String>getTablesPresentInOracleDatabase()protected java.lang.String[]getTableTypes()protected voidinsertEntity(DbEntityOperation operation)booleanisCmmnHistoryTablePresent()booleanisCmmnTablePresent()protected booleanisConcurrentModificationException(DbOperation failedOperation, java.lang.Exception cause)static booleanisCrdbConcurrencyConflict(java.lang.Throwable cause)In cases where CockroachDB is used, and a failed operation is detected, the method checks if the exception was caused by a CockroachDBTransactionRetryException.static booleanisCrdbConcurrencyConflictOnCommit(java.lang.Throwable cause, ProcessEngineConfigurationImpl configuration)In cases where CockroachDB is used, and a failed operation is detected, the method checks if the exception was caused by a CockroachDBTransactionRetryException.booleanisDmnHistoryTablePresent()booleanisDmnTablePresent()booleanisEngineTablePresent()booleanisHistoryTablePresent()booleanisIdentityTablePresent()protected booleanisMissingTablesException(java.lang.Exception e)booleanisTablePresent(java.lang.String tableName)voidlock(java.lang.String statement, java.lang.Object parameter)java.lang.StringprependDatabaseTablePrefix(java.lang.String tableName)protected java.lang.StringreadNextTrimmedLine(java.io.BufferedReader reader)voidrollback()<T extends DbEntity>
TselectById(java.lang.Class<T> type, java.lang.String id)java.util.List<?>selectList(java.lang.String statement, java.lang.Object parameter)java.lang.ObjectselectOne(java.lang.String statement, java.lang.Object parameter)intupdate(java.lang.String updateStatement, java.lang.Object parameter)-
Methods inherited from class org.camunda.bpm.engine.impl.db.AbstractPersistenceSession
addEntityLoadListener, dbSchemaCreate, dbSchemaDrop, dbSchemaPrune, dbSchemaUpdate, deleteBulk, deleteEntity, executeDbOperation, fireEntityLoaded, updateBulk, updateEntity
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.camunda.bpm.engine.impl.db.PersistenceSession
executeDbOperations
-
-
-
-
Field Detail
-
LOG
protected static final EnginePersistenceLogger LOG
-
JDBC_METADATA_TABLE_TYPES
public static final java.lang.String[] JDBC_METADATA_TABLE_TYPES
-
PG_JDBC_METADATA_TABLE_TYPES
public static final java.lang.String[] PG_JDBC_METADATA_TABLE_TYPES
-
sqlSession
protected org.apache.ibatis.session.SqlSession sqlSession
-
dbSqlSessionFactory
protected DbSqlSessionFactory dbSqlSessionFactory
-
connectionMetadataDefaultCatalog
protected java.lang.String connectionMetadataDefaultCatalog
-
connectionMetadataDefaultSchema
protected java.lang.String connectionMetadataDefaultSchema
-
-
Constructor Detail
-
DbSqlSession
public DbSqlSession(DbSqlSessionFactory dbSqlSessionFactory)
-
DbSqlSession
public DbSqlSession(DbSqlSessionFactory dbSqlSessionFactory, java.sql.Connection connection, java.lang.String catalog, java.lang.String schema)
-
-
Method Detail
-
selectList
public java.util.List<?> selectList(java.lang.String statement, java.lang.Object parameter)
-
executeSelectList
public java.util.List<java.lang.Object> executeSelectList(java.lang.String statement, java.lang.Object parameter)
-
selectById
public <T extends DbEntity> T selectById(java.lang.Class<T> type, java.lang.String id)
-
selectOne
public java.lang.Object selectOne(java.lang.String statement, java.lang.Object parameter)
-
lock
public void lock(java.lang.String statement, java.lang.Object parameter)
-
executeSelectForUpdate
protected abstract void executeSelectForUpdate(java.lang.String statement, java.lang.Object parameter)
-
entityUpdatePerformed
protected void entityUpdatePerformed(DbEntityOperation operation, int rowsAffected, java.lang.Exception failure)
-
bulkUpdatePerformed
protected void bulkUpdatePerformed(DbBulkOperation operation, int rowsAffected, java.lang.Exception failure)
-
bulkDeletePerformed
protected void bulkDeletePerformed(DbBulkOperation operation, int rowsAffected, java.lang.Exception failure)
-
bulkOperationPerformed
protected void bulkOperationPerformed(DbBulkOperation operation, int rowsAffected, java.lang.Exception failure)
-
entityDeletePerformed
protected void entityDeletePerformed(DbEntityOperation operation, int rowsAffected, java.lang.Exception failure)
-
configureFailedDbEntityOperation
protected void configureFailedDbEntityOperation(DbEntityOperation operation, java.lang.Exception failure)
-
isConcurrentModificationException
protected boolean isConcurrentModificationException(DbOperation failedOperation, java.lang.Exception cause)
-
isCrdbConcurrencyConflict
public static boolean isCrdbConcurrencyConflict(java.lang.Throwable cause)
In cases where CockroachDB is used, and a failed operation is detected, the method checks if the exception was caused by a CockroachDBTransactionRetryException.- Parameters:
cause- for which an operation failed- Returns:
- true if the failure was due to a CRDB
TransactionRetryException. Otherwise, it's false.
-
isCrdbConcurrencyConflictOnCommit
public static boolean isCrdbConcurrencyConflictOnCommit(java.lang.Throwable cause, ProcessEngineConfigurationImpl configuration)In cases where CockroachDB is used, and a failed operation is detected, the method checks if the exception was caused by a CockroachDBTransactionRetryException. This method may be used when a CRDB Error occurs on commit, and a Command Context is not available, as it has already been closed. This is the case with Spring/JTA transaction interceptors.- Parameters:
cause- for which an operation failedconfiguration- of the Process Engine- Returns:
- true if the failure was due to a CRDB
TransactionRetryException. Otherwise, it's false.
-
insertEntity
protected void insertEntity(DbEntityOperation operation)
- Specified by:
insertEntityin classAbstractPersistenceSession
-
executeInsertEntity
protected void executeInsertEntity(java.lang.String insertStatement, java.lang.Object parameter)
-
entityInsertPerformed
protected void entityInsertPerformed(DbEntityOperation operation, int rowsAffected, java.lang.Exception failure)
-
executeDelete
protected int executeDelete(java.lang.String deleteStatement, java.lang.Object parameter)
-
executeUpdate
public int executeUpdate(java.lang.String updateStatement, java.lang.Object parameter)
-
update
public int update(java.lang.String updateStatement, java.lang.Object parameter)
-
executeNonEmptyUpdateStmt
public int executeNonEmptyUpdateStmt(java.lang.String updateStmt, java.lang.Object parameter)
-
flush
public void flush()
-
flushOperations
public void flushOperations()
-
flushBatchOperations
public java.util.List<org.apache.ibatis.executor.BatchResult> flushBatchOperations()
-
close
public void close()
-
commit
public void commit()
-
rollback
public void rollback()
-
dbSchemaCheckVersion
public void dbSchemaCheckVersion()
-
getDbVersion
protected java.lang.String getDbVersion()
- Specified by:
getDbVersionin classAbstractPersistenceSession
-
dbSchemaCreateIdentity
protected void dbSchemaCreateIdentity()
- Specified by:
dbSchemaCreateIdentityin classAbstractPersistenceSession
-
dbSchemaCreateHistory
protected void dbSchemaCreateHistory()
- Specified by:
dbSchemaCreateHistoryin classAbstractPersistenceSession
-
dbSchemaCreateEngine
protected void dbSchemaCreateEngine()
- Specified by:
dbSchemaCreateEnginein classAbstractPersistenceSession
-
dbSchemaCreateCmmn
protected void dbSchemaCreateCmmn()
- Specified by:
dbSchemaCreateCmmnin classAbstractPersistenceSession
-
dbSchemaCreateCmmnHistory
protected void dbSchemaCreateCmmnHistory()
- Specified by:
dbSchemaCreateCmmnHistoryin classAbstractPersistenceSession
-
dbSchemaCreateDmn
protected void dbSchemaCreateDmn()
- Specified by:
dbSchemaCreateDmnin classAbstractPersistenceSession
-
dbSchemaCreateDmnHistory
protected void dbSchemaCreateDmnHistory()
- Specified by:
dbSchemaCreateDmnHistoryin classAbstractPersistenceSession
-
dbSchemaDropIdentity
protected void dbSchemaDropIdentity()
- Specified by:
dbSchemaDropIdentityin classAbstractPersistenceSession
-
dbSchemaDropHistory
protected void dbSchemaDropHistory()
- Specified by:
dbSchemaDropHistoryin classAbstractPersistenceSession
-
dbSchemaDropEngine
protected void dbSchemaDropEngine()
- Specified by:
dbSchemaDropEnginein classAbstractPersistenceSession
-
dbSchemaDropCmmn
protected void dbSchemaDropCmmn()
- Specified by:
dbSchemaDropCmmnin classAbstractPersistenceSession
-
dbSchemaDropCmmnHistory
protected void dbSchemaDropCmmnHistory()
- Specified by:
dbSchemaDropCmmnHistoryin classAbstractPersistenceSession
-
dbSchemaDropDmn
protected void dbSchemaDropDmn()
- Specified by:
dbSchemaDropDmnin classAbstractPersistenceSession
-
dbSchemaDropDmnHistory
protected void dbSchemaDropDmnHistory()
- Specified by:
dbSchemaDropDmnHistoryin classAbstractPersistenceSession
-
executeMandatorySchemaResource
public void executeMandatorySchemaResource(java.lang.String operation, java.lang.String component)
-
isEngineTablePresent
public boolean isEngineTablePresent()
- Specified by:
isEngineTablePresentin classAbstractPersistenceSession
-
isHistoryTablePresent
public boolean isHistoryTablePresent()
- Specified by:
isHistoryTablePresentin classAbstractPersistenceSession
-
isIdentityTablePresent
public boolean isIdentityTablePresent()
- Specified by:
isIdentityTablePresentin classAbstractPersistenceSession
-
isCmmnTablePresent
public boolean isCmmnTablePresent()
- Specified by:
isCmmnTablePresentin classAbstractPersistenceSession
-
isCmmnHistoryTablePresent
public boolean isCmmnHistoryTablePresent()
- Specified by:
isCmmnHistoryTablePresentin classAbstractPersistenceSession
-
isDmnTablePresent
public boolean isDmnTablePresent()
- Specified by:
isDmnTablePresentin classAbstractPersistenceSession
-
isDmnHistoryTablePresent
public boolean isDmnHistoryTablePresent()
- Specified by:
isDmnHistoryTablePresentin classAbstractPersistenceSession
-
isTablePresent
public boolean isTablePresent(java.lang.String tableName)
-
getTableNamesPresent
public java.util.List<java.lang.String> getTableNamesPresent()
- Specified by:
getTableNamesPresentin interfacePersistenceSession- Overrides:
getTableNamesPresentin classAbstractPersistenceSession
-
getTablesPresentInOracleDatabase
protected java.util.List<java.lang.String> getTablesPresentInOracleDatabase() throws java.sql.SQLException- Throws:
java.sql.SQLException
-
prependDatabaseTablePrefix
public java.lang.String prependDatabaseTablePrefix(java.lang.String tableName)
-
getResourceForDbOperation
public java.lang.String getResourceForDbOperation(java.lang.String directory, java.lang.String operation, java.lang.String component)
-
executeSchemaResource
public void executeSchemaResource(java.lang.String operation, java.lang.String component, java.lang.String resourceName, boolean isOptional)
-
executeSchemaResource
public void executeSchemaResource(java.lang.String schemaFileResourceName)
-
addSqlStatementPiece
protected java.lang.String addSqlStatementPiece(java.lang.String sqlStatement, java.lang.String line)
-
readNextTrimmedLine
protected java.lang.String readNextTrimmedLine(java.io.BufferedReader reader) throws java.io.IOException- Throws:
java.io.IOException
-
isMissingTablesException
protected boolean isMissingTablesException(java.lang.Exception e)
-
getTableTypes
protected java.lang.String[] getTableTypes()
-
getSqlSession
public org.apache.ibatis.session.SqlSession getSqlSession()
-
getDbSqlSessionFactory
public DbSqlSessionFactory getDbSqlSessionFactory()
-
-