分享

Hibernate 中 Session的 load()与 get() 方法

 really love 2010-07-01
继续做练习,先insert几条数据,一切正常;然后又试验了update方法也很正常;接着用了delete方法同样没有出现异常;正当我很满意的时候,忽然发现load方法报错了,原来我load了一个已经删除记录的ID!
  错误如下:
  org.hibernate.ObjectNotFoundException: No row with the given identifier exists
来源:(http://blog.sina.com.cn/s/blog_48f0b363010003zt.html) - Hibernate 中 Session的 load()与 get() 方法_天上星_新浪博客
 
  感觉这样十分不合理,如果在项目中,肯定会经常出现查找已经不存在的记录的,例如:今天看了某条新闻数据,把网页地址存了下来;之后这条新闻由于某些问题被后台删除掉,那么再打开连接的时候就肯定会报错了! 难道以后需要在每次load之前取搜索一下数据库是否存在此ID吗?? 这样肯定不对,对效率以及系统资源都是极大地浪费!!
 
  于是,我开始到处寻找答案,可是各个论坛内都仅仅是告诉这种错误有可能是由于ID不存在而导致的。。。唉,可是应该如何合理的避免这种错误出现呢,毕竟在系统应用中,是应该能捕获这种错误同时给用户报告合理错误信息的(例如:您查看的新闻已经不存在 等等);可是直接从后台报错就不好办了。 到处都没有找到答案,只好继续看书吧,还是孙卫琴的那本《精通Hibernate》
 
  终于发现了,原来在Hibernate中,对于Session的读取操作提供两种方法:load()和get()。 对于程序读取的当前ID不存在的时候,load()方法就是直接抛出异常,而get()方法则返回null值! 这不正是我所需要的嘛!! 还是没仔细看书,这么基本、这么弱智的问题,难怪没有人搭理了。。。好好把书通读一遍才是硬道理!! 要想学好Hibernate还是应该把它的基础知识巩固一下才行!!!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多