c3p0的JdbcProxyGenerator如何工作(Java‽中的元编程)?

时间:2012-06-08 16:34:00

标签: c3p0

我一直在使用c3p0和hibernate一起使用了几年。查看异常堆栈跟踪时,我在堆栈中看到了诸如com.mchange.v2.c3p0.impl.NewProxyPreparedStatement之类的类。我去寻找这些类的源代码,并遇到了curous com.mchange.v2.c3p0.codegen包。

特别是,JdbcProxyGenerator似乎是Java中的元编程。我很难理解codegen机制及其使用原因。构建的jar包含这些生成的类,所以我假设这些类是在构建期间构建的,可能是两阶段构建的一部分。 codegen包似乎不在生成的jar中。

任何见解都会受到赞赏,仅仅是为了我自己的好奇心。谢谢!

1 个答案:

答案 0 :(得分:3)

是的,你是对的。

c3p0使用代码生成来生成大型JDBC接口的非反射代理实现,具有许多属性的“java bean”类,以及一些包含调试和日志标记的类(用于在构建中设置条件编译)。

您始终可以通过在源代码分发中键入ant codegen,然后查看build / codebase目录来查看生成的类。 c3p0(0.9.2-pre2)的最新二进制分发包括src.jar文件中生成的源,您也可以在http://repo1.maven.org/maven2/com/mchange/c3p0/0.9.2-pre2-RELEASE/c3p0-0.9.2-pre2-RELEASE-sources.jar找到maven工件

我希望这有帮助!