由于无法找到该文章的原创作者,在此无法注明出处,请作者见谅.如有问题或侵害到您的利益,请与我联系.
以 Hibernate2.0.3 为例
hibernate2.jar:
Hibernate 的库,没有什么可说的,必须使用的 jar 包
cglib-asm.jar:
CGLIB 库, Hibernate 用它来实现 PO 字节码的动态生成,非常核心的库,必须使用的 jar 包
dom4j.jar:
dom4j 是一个 Java 的 XML API ,类似于 jdom ,用来读写 XML 文件的。 dom4j 是一个非常非常优秀的 Java XML API ,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在 SourceForge 上找到它。在 IBM developerWorks 上面可以找到一篇文章,对主流的 Java XML API 进行的性能、功能和易用性的评测, dom4j 无论在那个方面都是非常出色的。我早在将近两年之前就开始使用 dom4j ,直到现在。如今你可以看到越来越多的 Java 软件都在使用 dom4j 来读写 XML ,特别值得一提的是连 Sun 的 JAXM 也在用 dom4j 。这是必须使用的 jar 包, Hibernate 用它来读写配置文件。
odmg.jar:
ODMG 是一个 ORM 的规范, Hibernate 实现了 ODMG 规范,这是一个核心的库,必须使用的 jar 包。
commons-collections.jar :
Apache Commons 包中的一个,包含了一些 Apache 开发的集合类,功能比 java.util.* 强大。必须使用的 jar 包。
commons-beanutils.jar :
Apache Commons 包中的一个,包含了一些 Bean 工具类类。必须使用的 jar 包。
commons-lang.jar:
Apache Commons 包中的一个,包含了一些数据类型工具类,是 java.lang.* 的扩展。必须使用的 jar 包。
commons-logging.jar:
Apache Commons 包中的一个,包含了日志功能,必须使用的 jar 包。
这个包本身包含了一个 Simple Logger ,但是功能很弱。
在运行的时候它会先在 CLASSPATH 找 log4j ,如果有,就使用 log4j ,如果没有,就找 JDK1.4 带的 java.util.logging ,如果也找不到就用 Simple Logger 。
commons-logging.jar 的出现是一个历史的的遗留的遗憾,当初 Apache 极力游说 Sun 把 log4j 加入 JDK1.4 ,然而 JDK1.4 项目小组已经接近发布 JDK1.4 产品的时间了,因此拒绝了 Apache 的要求,使用自己的 java.util.logging ,这个包的功能比 log4j 差的很远,性能也一般。后来 Apache 就开发出来了 commons-logging.jar 用来兼容两个 logger 。因此用 commons-logging.jar 写的 log 程序,底层的 Logger 是可以切换的,你可以选择 log4j , java.util.logging 或者它自带的 Simple Logger 。不过我仍然强烈建议使用 log4j ,因为 log4j 性能很高, log 输出信息时间几乎等于 System.out ,而处理一条 log 平均只需要 5us 。你可以在 Hibernate 的 src 目录下找到 Hibernate 已经为你准备好了的 log4j 的配置文件,你只需要到 Apache 网站去下载 log4j 就可以了。 commons-logging.jar 也是必须的 jar 包。 使用 Hibernate 必须的 jar 包就是以上的这几个,剩下的都是可选的。
ant.jar:
Ant 编译工具的 jar 包,用来编译 Hibernate 源代码的。如果你不准备修改和编译 Hibernate 源代码,那么就没有什么用,可选的 jar 包 。
optional.jar :
Ant 的一个辅助包。
c3p0.jar :
C3PO 是一个数据库连接池, Hibernate 可以配置为使用 C3PO 连接池。如果你准备用这个连接池,就需要这个 jar 包。
proxool.jar :
也是一个连接池,同上。
commons-pool.jar, commons-dbcp.jar :
DBCP 数据库连接池, Apache 的 Jakarta 组织开发的, Tomcat4 的连接池也是 DBCP 。 实际上 Hibernate 自己也实现了一个非常非常简单的数据库连接池,加上上面 3 个,你实际上可以在 Hibernate 上选择 4 种不同的数据库连接池,选择哪一个看个人的偏好,不过 DBCP 可能更通用一些。另外强调一点,如果在 EJB 中使用 Hibernate ,一定要用 App Server 的连接池,不要用以上 4 种连接池,否则容器管理事务不起作用。
connector.jar :
JCA 规范,如果你在 App Server 上把 Hibernate 配置为 Connector 的话,就需要这个 jar 。不过实际上一般 App Server 肯定会带上这个包,所以实际上是多余的包。
jaas.jar :
JAAS 是用来进行权限验证的,已经包含在 JDK1.4 里面了。所以实际上是多余的包。
jcs.jar :
如果你准备在 Hibernate 中使用 JCS 的话,那么必须包括它,否则就不用。
jdbc2_0-stdext.jar :
JDBC2.0 的扩展包,一般来说数据库连接池会用上它。不过 App Server 都会带上,所以也是多余的。
jta.jar :
JTA 规范,当 Hibernate 使用 JTA 的时候需要,不过 App Server 都会带上,所以也是多余的。
junit.jar:
Junit 包,当你运行 Hibernate 自带的测试代码的时候需要,否则就不用。
xalan.jar, xerces.jar, xml-apis.jar:
Xerces 是 XML 解析器, Xalan 是格式化器, xml-apis 实际上是 JAXP 。一般 App Server 都会带上, JDK1.4 也包含了解析器,不过不是 Xerces ,是 Crimson ,效率比较差,不过 Hibernate 用 XML 只不过是读取配置文件,性能没什么紧要的,所以也是多余的。