目录
引言
概述
batch_job_instance表
batch_job_execution表
batch_job_execution_context表
batch_job_execution_params表
btch_step_execution表
batch_step_execution_context表
H2内存数据库
转视频版
引言
接着上篇:Spring Batch 步骤对象-返回状态-ExitStatus,了解返回状态ExitStatus状态类后,接下来一起学习一下Spring Batch 批处理核心的数据表
概述
学习阶段,Spring Batch数据存储可以采用2种方式,1:H2内存数据库 2:关系型数据库。选择1这个好说,基本上不需要我们做过多干预,选择2也一样,但是我们可以借助数据库的可视化工具来查看数据表,帮助我们更好的了解springbatch执行流程或原理。
当我们选择数据库方式存储批处理数据,Spring Batch 在启动时会自动创建9张表,分别存储: JobExecution、JobContext、JobParameters、JobInstance、JobExecution id序列、Job id序列、StepExecution、StepContext/ChunkContext、StepExecution id序列 等对象。Spring Batch 提供 JobRepository 组件来实现这些表的CRUD操作,并且这些操作基本上封装在步骤,块,作业api操作中,并不需要我们太多干预,所以这章内容了解即可。

batch_job_instance表
当作业第一次执行时,会根据作业名,标识参数生成一个唯一JobInstance对象,batch_job_instance表会记录一条信息代表这个作业实例。
![]()
| 字段 | 描述 |
|---|---|
| JOB_INSTANCE_ID | 作业实例主键 |
| VERSION | 乐观锁控制的版本号 |
| JOB_NAME | 作业名称 |
| JOB_KEY | 作业名与标识性参数的哈希值,能唯一标识一个job实例 |
batch_job_execution表
每次启动作业时,都会创建一个JobExecution对象,代表一次作业执行,该对象记录存放于batch_job_execution 表。

| 字段 | 描述 |
|---|---|
| JOB_EXECUTION_ID | job执行对象主键 |
| VERSION | 乐观锁控制的版本号 |
| JOB_INSTANCE_ID | JobInstanceId(归属于哪个JobInstance) |
| CREATE_TIME | 记录创建时间 |
| START_TIME | 作业执行开始时间 |
| END_TIME | 作业执行结束时间 |
| STATUS | 作业执行的批处理状态 |
| EXIT_CODE | 作业执行的退出码 |
| EXIT_MESSAGE | 作业执行的退出信息 |
| LAST_UPDATED | 最后一次更新记录的时间 |
batch_job_execution_context表
batch_job_execution_context用于保存JobContext对应的ExecutionContext对象数据。

| 字段 | 描述 |
|---|---|
| JOB_EXECUTION_ID | job执行对象主键 |
| SHORT_CONTEXT | ExecutionContext系列化后字符串缩减版 |
| SERIALIZED_CONTEXT | ExecutionContext系列化后字符串 |
batch_job_execution_params表
作业启动时使用标识性参数保存的位置:batch_job_execution_params, 一个参数一个记录
| 字段 | 描述 |
|---|---|
| JOB_EXECUTION_ID | job执行对象主键 |
| TYPE_CODE | 标记参数类型 |
| KEY_NAME | 参数名 |
| STRING_VALUE | 当参数类型为String时有值 |
| DATE_VALUE | 当参数类型为Date时有值 |
| LONG_VAL | 当参数类型为LONG时有值 |
| DOUBLE_VAL | 当参数类型为DOUBLE时有值 |
| IDENTIFYING | 用于标记该参数是否为标识性参数 |
btch_step_execution表
作业启动,执行步骤,每个步骤执行信息保存在tch_step_execution表中
| 字段 | 描述 |
|---|---|
| STEP_EXECUTION_ID | 步骤执行对象id |
| VERSION | 乐观锁控制版本号 |
| STEP_NAME | 步骤名称 |
| JOB_EXECUTION_ID | 作业执行对象id |
| START_TIME | 步骤执行的开始时间 |
| END_TIME | 步骤执行的结束时间 |
| STATUS | 步骤批处理状态 |
| COMMIT_COUNT | 在步骤执行中提交的事务次数 |
| READ_COUNT | 读入的条目数量 |
| FILTER_COUNT | 由于ItemProcessor返回null而过滤掉的条目数 |
| WRITE_COUNT | 写入条目数量 |
| READ_SKIP_COUNT | 由于ItemReader中抛出异常而跳过的条目数量 |
| PROCESS_SKIP_COUNT | 由于ItemProcessor中抛出异常而跳过的条目数量 |
| WRITE_SKIP_COUNT | 由于ItemWriter中抛出异常而跳过的条目数量 |
| ROLLBACK_COUNT | 在步骤执行中被回滚的事务数量 |
| EXIT_CODE | 步骤的退出码 |
| EXT_MESSAGE | 步骤执行返回的信息 |
| LAST_UPDATE | 最后一次更新记录时间 |
batch_step_execution_context表
StepContext对象对应的ExecutionContext 保存的数据表:batch_step_execution_context

| 字段 | 描述 |
|---|---|
| STEP_EXECUTION_ID | 步骤执行对象id |
| SHORT_CONTEXT | ExecutionContext系列化后字符串缩减版 |
| SERIALIZED_CONTEXT | ExecutionContext系列化后字符串 |
H2内存数据库
作业的运行指的是对作业的控制,包括作业启动,作业停止,作业异常处理,作业重启处理等。
到这,本篇就结束了,欲知后事如何,请听下回分解~
转视频版
看文字不过瘾可以切换视频版:Spring Batch高效批处理框架实战



















