Package org.springframework.batch.core.repository.dao

# Class JdbcJobExecutionDao

java.lang.Object
org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao
org.springframework.batch.core.repository.dao.JdbcJobExecutionDao

All Implemented Interfaces:
  `JobExecutionDao`, `org.springframework.beans.factory.InitializingBean`

public class JdbcJobExecutionDao extends AbstractJdbcBatchMetadataDao implements JobExecutionDao, org.springframework.beans.factory.InitializingBean
JDBC implementation of `JobExecutionDao`. Uses sequences (via Spring's `DataFieldMaxValueIncrementer` abstraction) to create all primary keys before inserting a new row. Objects are checked to ensure all mandatory fields to be stored are not null. If any are found to be null, an IllegalArgumentException will be thrown. This could be left to JdbcTemplate, however, the exception will be fairly vague, and fails to highlight which field caused the exception.

Author:
  Lucas Ward, Dave Syer, Robert Kasanicky, Michael Minella, Mahmoud Ben Hassine, Dimitrios Liapis

- ## Field Summary

  ### Fields inherited from class org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao

  `DEFAULT_EXIT_MESSAGE_LENGTH, DEFAULT_TABLE_PREFIX`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JdbcJobExecutionDao()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `afterPropertiesSet()`
  `List<JobExecution>`
  `findJobExecutions(JobInstance job)`
  Return all `JobExecution`s for given `JobInstance`, sorted backwards by creation order (so the first element is the most recent).
  `Set<JobExecution>`
  `findRunningJobExecutions(String jobName)`
  `JobExecution`
  `getJobExecution(Long executionId)`
  `protected JobParameters`
  `getJobParameters(Long executionId)`
  `JobExecution`
  `getLastJobExecution(JobInstance jobInstance)`
  Find the last `JobExecution` to have been created for a given `JobInstance`.
  `void`
  `saveJobExecution(JobExecution jobExecution)`
  SQL implementation using Sequences via the Spring incrementer abstraction.
  `void`
  `setExitMessageLength(int exitMessageLength)`
  Public setter for the exit message length in database.
  `void`
  `setJobExecutionIncrementer(org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer jobExecutionIncrementer)`
  Setter for `DataFieldMaxValueIncrementer` to be used when generating primary keys for `JobExecution` instances.
  `void`
  `synchronizeStatus(JobExecution jobExecution)`
  Because it may be possible that the status of a JobExecution is updated while running, the following method will synchronize only the status and version fields.
  `void`
  `updateJobExecution(JobExecution jobExecution)`
  Update given JobExecution using a SQL UPDATE statement.

  ### Methods inherited from class org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao

  `getClobTypeToUse, getJdbcTemplate, getQuery, getTablePrefix, setClobTypeToUse, setJdbcTemplate, setTablePrefix`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### JdbcJobExecutionDao

    public JdbcJobExecutionDao()

- ## Method Details

  - ### setExitMessageLength

    public void setExitMessageLength(int exitMessageLength)
    Public setter for the exit message length in database. Do not set this if you haven't modified the schema.
    Parameters:
      `exitMessageLength` - the exitMessageLength to set

  - ### setJobExecutionIncrementer

    public void setJobExecutionIncrementer(org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer jobExecutionIncrementer)
    Setter for `DataFieldMaxValueIncrementer` to be used when generating primary keys for `JobExecution` instances.
    Parameters:
      `jobExecutionIncrementer` - the `DataFieldMaxValueIncrementer`

  - ### afterPropertiesSet

    public void afterPropertiesSet() throws Exception
    Specified by:
      `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
    Overrides:
      `afterPropertiesSet` in class `AbstractJdbcBatchMetadataDao`
    Throws:
      `Exception`

  - ### findJobExecutions

    public List<JobExecution> findJobExecutions(JobInstance job)
    Description copied from interface: `JobExecutionDao`
    Return all `JobExecution`s for given `JobInstance`, sorted backwards by creation order (so the first element is the most recent).
    Specified by:
      `findJobExecutions` in interface `JobExecutionDao`
    Parameters:
      `job` - parent `JobInstance` of the `JobExecution`s to find.
    Returns:
      `List` containing JobExecutions for the jobInstance.

  - ### saveJobExecution

    public void saveJobExecution(JobExecution jobExecution)
    SQL implementation using Sequences via the Spring incrementer abstraction. Once a new id has been obtained, the JobExecution is saved via a SQL INSERT statement.
    Specified by:
      `saveJobExecution` in interface `JobExecutionDao`
    Parameters:
      `jobExecution` - `JobExecution` instance to be saved.
    Throws:
      `IllegalArgumentException` - if jobExecution is null, as well as any of it's fields to be persisted.
    See Also:
      - `JobExecutionDao.saveJobExecution(JobExecution)`

  - ### updateJobExecution

    public void updateJobExecution(JobExecution jobExecution)
    Update given JobExecution using a SQL UPDATE statement. The JobExecution is first checked to ensure all fields are not null, and that it has an ID. The database is then queried to ensure that the ID exists, which ensures that it is valid.
    Specified by:
      `updateJobExecution` in interface `JobExecutionDao`
    Parameters:
      `jobExecution` - `JobExecution` instance to be updated.
    See Also:
      - `JobExecutionDao.updateJobExecution(JobExecution)`

  - ### getLastJobExecution

    @Nullable public JobExecution getLastJobExecution(JobInstance jobInstance)
    Description copied from interface: `JobExecutionDao`
    Find the last `JobExecution` to have been created for a given `JobInstance`.
    Specified by:
      `getLastJobExecution` in interface `JobExecutionDao`
    Parameters:
      `jobInstance` - the `JobInstance`
    Returns:
      the last `JobExecution` to execute for this instance or `null` if no job execution is found for the given job instance.

  - ### getJobExecution

    @Nullable public JobExecution getJobExecution(Long executionId)
    Specified by:
      `getJobExecution` in interface `JobExecutionDao`
    Parameters:
      `executionId` - `Long` containing the id of the execution.
    Returns:
      the `JobExecution` for given identifier.

  - ### findRunningJobExecutions

    public Set<JobExecution> findRunningJobExecutions(String jobName)
    Specified by:
      `findRunningJobExecutions` in interface `JobExecutionDao`
    Parameters:
      `jobName` - `String` containing the name of the job.
    Returns:
      all `JobExecution` that are still running (or indeterminate state), i.e. having null end date, for the specified job name.

  - ### synchronizeStatus

    public void synchronizeStatus(JobExecution jobExecution)
    Description copied from interface: `JobExecutionDao`
    Because it may be possible that the status of a JobExecution is updated while running, the following method will synchronize only the status and version fields.
    Specified by:
      `synchronizeStatus` in interface `JobExecutionDao`
    Parameters:
      `jobExecution` - to be updated.

  - ### getJobParameters

    protected JobParameters getJobParameters(Long executionId)
    Parameters:
      `executionId` - `Long` containing the id for the execution.
    Returns:
      job parameters for the requested execution id