按理说,如果Hibernate不依附于SSH运行,像《【Struts2+Hibernate3+Spring3】利用SSH整合,完成打印用户表,用户登录、注册、修改密码系统》(点击打开链接)一样,把hibernate-distribution-3.6.10.Final解压之后,把根目录的hibernate3.jar,hibernate-distribution-3.6.0.Final\lib\required下的所有jar,hibernate-distribution-3.6.0.Final\lib\jpa下的所有jar也就是那个hibernate-jpa-2.0-api-1.0.1.Final.jar,hibernate-distribution-3.6.0.Final\lib\optional\c3p0下的所有包,也就是那个c3p0-0.9.1.jar,拷贝到相应的Java工程加载同样可以运行了,但是为什么没有Spring与Struts2的支持,就会出现如下图的,Failed to load class "org.slf4j.impl.StaticLoggerBinder"错误呢?
这个问题在Hibernate4.x中没有,可能意识到自己这样是不对的,在Hibernate3.x中,Hibernate使用SLF4J API这个接口记录日志,但是在Hibernate的lib中,却没有提供Log4J的包,都不知道在想甚的,自己用了的lib包因为害怕与其它框架的日志记录包冲突却不提供,导致自己无法独立运行!
因此,我们要自己补充SLF4J API这个接口。
具体是打开SLF4J官方网站(点击打开链接),下载:
解压之后,如下图结构,版本号没问题,取走其中的slf4j-log4j12-1.7.12.jar,加载到独立运行的Hibernate3.x Java工程。
由于slf4j像Hibernate兼容各种连接Mysql,Orcale等数据库连接jar包的接口一样,只是一个兼容各种生成Java日志jar包。还要下载一个真正工作的日志jar包,这里使用最大众的log4j,虽然平时我们一般都不会记录日志的了……打开Apache的官网(点击打开链接)如下图,选择log4j-1.2.17.zip(Windows)或者log4j-1.2.17.tar.gz(Linux)。
解压之后,把apache-log4j-1.2.17下的log4j-1.2.17.jar,同样加载到独立运行的Hibernate3.x Java工程。
此时,独立的Hibernate3.x已经可以运行了,不过还没有完,运行时候还会出现如下的log4j:WARN Please initialize the log4j system properly警告:
要解决这个问题非常简单,建立LOG4J 的配置文件即可。如下图在src目录下创建配置文件,右击src文件夹,选择菜单New>File,文件名输入log4j.properties,
在里面写入如下内容:
log4j.rootLogger=WARN, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n此时,Hibernate3.x终于可以自己独立运行了,真的是晕死了……