Hibernate3的问题,不知道你是不是碰到过

       今天配置了第一个用Hibernate做持久层的工程。按理说导入hibernate.3jar和lib下的required文件夹下的Jar包就能正常运行的,我也是这样做的,但是导入后,写完配置文件和对象关系映射文件,运行程序居然出错了。


看第一行就我们可以知道不能加载org.slf4j.impl包下的StaticLoggerBinder类,然后在打开slf4j-api-1.5.2.jar没有发现有有org.slf4j.impl包,其他jar包也没有。所以现在的问题是这个包和类在哪,上百度都说缺少slf4j-nop-1.5.2.jar(但是很少说原因)。 下载导入工程,这次能正常运行了。

但是为什么Hibernate不自带这个包呢?暂时不能理解!


但是仔细想想,从包名impl我们似乎可以想到slf4j-nop-1.5.2.jar应该是一个具体实现类的包。那么slf4j-api-1.5.2.jar下的应该就是接口了。到底是不是这样,还要观察源代码才能知道。

打开slf4j-api-1.5.2.jar的源码,可以轻易发现这样的接口:

public interface ILoggerFactory{……}

public interface IMarkerFactory{……}

public interface Marker extends Serializable{……}

public interface MarkerFactoryBinder {……}

再看看slf4j-nop-1.5.2.jar的源码,可以发现这样的实现类:

public class NOPLoggerFactory implements ILoggerFactory{……}

public class StaticLoggerBinder implements LoggerFactoryBinder{……}

public class StaticMarkerBinder implements MarkerFactoryBinder{……}


经过对比,证实了我的猜测:Hibernate的提供了api接口的包,但是没有提供impl实现包。至于为什么,我想应该是让程序员自主选择实现的方法吧,因为不止一种Jar实现了他的api接口。

这都是个人见解,如果你有不同的见解欢迎指正。


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值