我在hibernate中使用c3p0已经有几年了。在查看异常堆栈跟踪时,我在堆栈中看到了诸如com.mchange.v2.c3p0.impl.NewProxyPreparedStatement
之类的类。我去寻找这些类的源代码,偶然发现了curous com.mchange.v2.c3p0.codegen
包。
特别是,看起来JdbcProxyGenerator在Java语言中是元编程。我很难理解codegen机制以及为什么要使用它。构建的jar包含这些生成的类,所以我假设这些类是在构建过程中构建的,可能是作为两阶段构建的一部分。codegen包似乎不在生成的jar中。
出于我自己的好奇心,任何见解都将不胜感激。谢谢!
发布于 2012-06-08 22:54:47
是的,你说的完全正确。
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工件
我希望这能帮到你!
https://stackoverflow.com/questions/10952746
复制