Class JdbcSession

  • All Implemented Interfaces:

    public class JdbcSession
    extends Object
    implements AutoCloseable
    Wrapper around JDBC Connection representing "session", typically a transaction. Connection is prepared for the transaction (auto-commit is disabled), but startTransaction() or startReadOnlyTransaction() must be called explicitly. While not typical, multiple transactions can be executed in sequence (not concurrently). Object is AutoCloseable and can be used in try-with-resource blocks. If transaction is still active during closing the JDBC session, it commits the transaction. If database does not support read-only transactions directly, commit() executes rollback instead.

    Provides convenient methods for handling exceptions and OperationResults.

    All SQLExceptions are translated to SystemException.

    • Constructor Detail

      • JdbcSession

        public JdbcSession​(@NotNull
                           @NotNull Connection connection,
                           @NotNull SqlRepositoryConfiguration repoConfiguration,
                           @NotNull com.querydsl.sql.Configuration querydslConfiguration)
    • Method Detail

      • startTransaction

        public JdbcSession startTransaction()
        Starts transaction and returns this.
      • startTransaction

        public JdbcSession startTransaction​(int transactionLevel)
        Starts transaction with different transaction isolation level. This level will NOT be reverted to previous level after the end of transaction. It is advisable to use this only for short-lived JDBC sessions with special requirements.
      • startReadOnlyTransaction

        public JdbcSession startReadOnlyTransaction()
        Starts read-only transaction and returns this.
      • commit

        public void commit()
        Commits current transaction. If read-only transaction is not supported by database it rolls back read-only transaction.
      • rollback

        public void rollback()
        Rolls back the transaction. See also various handle*Exception() methods that do the same thing adding exception logging and changes to the operation result.
      • addColumn

        public void addColumn​(String tableName,
                              com.querydsl.sql.ColumnMetadata column)
        Alters table adding another column - intended for custom/extension columns.
      • query

        public com.querydsl.sql.SQLQuery<?> query()
        Creates Querydsl query based on current Querydsl configuration and session's connection.
      • insert

        public com.querydsl.sql.dml.SQLInsertClause insert​(com.querydsl.sql.RelationalPath<?> entity)
        Starts insert clause for specified entity. Check Querydsl docs on insert for more about various ways how to use it.
      • delete

        public com.querydsl.sql.dml.SQLDeleteClause delete​(com.querydsl.sql.RelationalPath<?> entity)
      • getNativeTypeName

        public String getNativeTypeName​(int typeCode)
      • handleGeneralRuntimeException

        public void handleGeneralRuntimeException​(@NotNull
                                                  @NotNull RuntimeException ex,
                                                  @Nullable OperationResult result)
        Rolls back the transaction and throws exception. If the exception is related to transaction serialization problems, the operation result does not record the error (non-fatal).
        SystemException - wrapping the exception used as parameter
        RuntimeException - rethrows input exception if related to transaction serialization
      • handleGeneralCheckedException

        public void handleGeneralCheckedException​(@NotNull
                                                  @NotNull Throwable ex,
                                                  @Nullable OperationResult result)
        Rolls back the transaction and throws exception.
        SystemException - wrapping the exception used as parameter