1. 工具的作用
根据数据库 Schema 信息生成一个java文件,并编译打包。
2. 继承关系
public class CodeGenTool extends com.cloudera.sqoop.tool.BaseSqoopTool {
可以看出,基本上所有的工具类都从BaseSqoopTool 继承3而来,具体的关系,已经在ImportTool 工具的代码分析中讲过。
3. 工具类的run 方法
@Override
/** {@inheritDoc} */
public int run(SqoopOptions options) {
......
generateORM(options, options.getTableName());
.....
3.1 generateORM 的具体实现
public String generateORM(SqoopOptions options, String tableName)
throws IOException {
......
CompilationManager compileMgr = new CompilationManager(options);
ClassWriter classWriter = new ClassWriter(options, manager, tableName, compileMgr);
classWriter.generate();
compileMgr.compile();
compileMgr.jar();
......
3.2 代码生成 ClassWriter
这个部分主要是根据数据库的元数据信息进行
3.3 代码编译 CompilationManager
这个部分主要是对刚刚生成的代码进行编译的,具体细节请去看源码,这里暂时忽略