Hibernate3.1 的一个Event机制问题

作者分享了使用Hibernate 3.1版本的经历,指出了Event机制存在的问题,特别是DefaultLoadEventListener的强制日志记录行为,给实际应用带来了困扰。
系统使用Hibernate, 感觉还可以. 从其强大的功能中获利不少. 于是hibernate 3.1出来后, 就升级到了这个版本. 但是新版本的一个Event机制, 却透露出其设计的一个大毛病.

在hibernate 3.1中, 所有的操作都是由Event来驱动的. 于是就存在了各种各样的EventListener. 按照设计原理, 既然是EventListener, 而且可配置, 那么就可以去掉默认的实现, 不配置任何的Listener, 还是可以运行的. 但是Hibernate没有做到这点. 例如其DefaultLoadEventListener就实现了其特别的逻辑. 如果没有该Listener, Hibernate是无法load数据的.

这基本违背了最简单的设计原则. 我希望是我还没有完全理解hibernate, 可能有其他可配置的选择.

还有一个问题, 也是比较令人难受的. 那就是在默认的Listener的实现中记录日志. 比如DefaultLoadEventListener 的onLoad方法, 如果没有数据存在就忘日志里写了如下的信息.

catch(HibernateException e) {
   log.info("Error performing load command", e);
   throw e;
  }

这就强制用户接收这些日志信息了. 很多时候, 我们使用该方法来验证数据是否存在, 结果会看到一大串的异常信息, 很不舒服.

从这两点看来, 其设计的思想还是没有从用户的角度来考虑呀.
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值