Using Persistent JobStores
In many ways, JobStores that use memory for storage and those that use some form of long-term persistence share similar traits. This shouldn't be that surprising because they both serve the same purpose.
As with RAMJobStore, persistent JobStores have both advantages and disadvantages. You should be careful to understand the pros and cons before choosing a persistent JobStore. This section explains the differences and the circumstances under which you would want to use a persistent JobStore.
Currently, Quartz provides two types of persistent JobStores, each one unique in its persistence mechanism.
All the persistent JobStores that ship with Quartz extend the org.quartz.impl.jdbcjobstore.JobStoreSupport class.
The JobStoreSupport Class
The JobStoreSupport class is abstract and implements the JobStore interface, discussed earlier in the chapter. It provides base functionality for all JDBC-based JobStores. Figure 6.1 shows the type hierarchy for JobStores.
Figure 6.1. The JobStore type hierarchy
As Figure 6.1 illustrates, JobStoreSupport implements the JobStore interface and acts as a base class for the two concrete persistent JobStores that Quartz offers.
Because the JobStoreSupport class is abstract, Quartz offers two different types of concrete persistent JobStores, each one designed for a specific database environment and configuration:
- org.quartz.impl.jdbcjobstore.JobStoreTX
- org.quartz.impl.jdbcjobstore.JobStoreCMT
Both persistent JobStores are discussed shortly. For now, let's talk about the database that is required for both versions.