您的位置:首页 > 其它

Hibernate3.1 的一个Event机制问题

2006-07-13 13:23 197 查看
系统使用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;
  }

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

从这两点看来, 其设计的思想还是没有从用户的角度来考虑呀.
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate command