zdon技术笔记

<br>积累是为了什么?
    <<  如何封锁您的(或打开别人的) Java 代码 英文原文 | 首 页 | Hibernate的最佳实践(zz自Reference)  >>
  • 2004-11-16

    hibernate随笔

    Tag: Hibernate技术

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://bpnrtech.blogbus.com/logs/499249.html

    1.hibernate危机(也是所有持久层解决框架的危机),A.B.C级连时候,如果每次load A同时也load了B,C这样将会时致命的,因为将会有n的SQL语句被执行,n的具体大小看B,C的数量多少。反正将会是一个可怕的数字。
    解决办法:
    一对多里面的 lazy=true 这样在load A的时候就不在加载B,那么何时来加载B呢?还有C
    3种方法
    1.在load A 后,当使用A.Bs的时候Hibernate会自动加载所有的B,前提条件是在使用A.Bs时session没有被关闭
    这样就必须使用filter,在页面请求结束的时候才关掉单前的session
    该方法也是相对实用的
    2.使用Hibernate.initialize(set);在load A的时候使用该语句,就会把A的所有B load出来,并不会把C,或责其他A的B也load出来。所以也是可靠的。
    3.一般对于大数据量的B时,一般还是使用HQL查询出来的


    规则:HibernateCRUD该类应该实现基本的操作(完成对异常的扑获,可能这个不规范?,但是程序清晰),以及扩展功能的操作(分两个,一个扑获异常,一个不扑获异常)
    做上面的原因是:在事务里如果需要几个基本操作才能完成,用session的基本操作,只需要一个基本操作的,用HibernateCRUD的操作,这时候HibernateCRUD的扩展操作也成了在事务里的基本操作
    注:基本操作,就是在session里直接有的操作,如save,update,find等

    HibernateCRUD.count(set)
      //这句话用来查询set记录的数目,但是set还没有被初始化,就是set里没有值
      //这个时候把设置了lazy=true,比如,不想得到set里的所以记录内容,但是要得到
      //记录的条数的时候就可以这样做,这样可以不用另外解HQL语句^^,真的很强大啊
      //System.out.print(HibernateCRUD.count(set));


    历史上的今天:

    域建模与用例建模:孰先孰后? 2004-11-16
    Business rules:在OptimalJ中的处理 2004-11-16
    关于Transaction Script、Domain Model模式讨论 2004-11-16
    cvs_eclipse配置笔记- - 2004-11-16
    ant+junit集成测试出现的一些问题总结- - 2004-11-16

    随机文章:

    Hibernate的最佳实践(zz自Reference) 2004-11-16
    Hibernate的一些小心得 2004-11-16
    Hibernate的一些小心得 2004-11-16
    Hibern8IDE HQL Commander窗口的中文问题 2004-11-15
    在Eclipse 中调用 Hibern8IDE,同时解决中文问题 2004-11-15

    收藏到:Del.icio.us




    引用地址:
    bpnr @14:42 | 编辑 | 继续话题 | 转发 | 分享 0

个人资料

bpnr

35岁,男性,IT业。宽容仍大,生命是一个过程,在路上......

日历

搜索

管理

  • 进入后台 写新日志
  • 文章管理 评论管理
  • 更换模板 访问统计

文章分类

    Tag

    • 工具使用[25]
    • J2EE基础[21]
    • WEB_WORK[13]
    • Hibernate技术[11]
    • Struts技术[9]
    More..

    最新文章

    • 域建模与用例建模:孰先孰后?
    • Business rules:在OptimalJ中的处理
    • 关于Transaction Script、Domain Model模式讨论
    • cvs_eclipse配置笔记- -
    • ant+junit集成测试出现的一些问题总结- -
    • apache下禁止以文件列表的形式出现在浏览器里的设置方法- -
    • 整合单元测试的自动化
    • Hibernate的最佳实践(zz自Reference)
    • hibernate随笔
    • 如何封锁您的(或打开别人的) Java 代码 英文原文
    全部日志>>

    最新评论

    • bwl:############################...
    • scott2006:能把这个发给我一份吗?非常感谢!zhuqing1039@...
    • 1:能把你这个日历控件发给我一份吗?blog下载不了,谢谢了...
    • lfeng15:大哥,写错了! on table!...
    • redlly:正如作者所说,JasperReport的功能很强大的:灵...
    • txdzll:谢了
    • 松山忝妖:請問你有用jasper report嗎? 我想跟不同的人...

    链接

    • 透明思考
    • 梦想风暴
    • 冰云@Blogging
    • --------------------------------------------
    • Hibernate中文网
    • Maven
    • 开放软件测试研究
    • --------------------------------------------
    • 样式表参考手册
    • Web Development: Advanced DHTML, JavaScript
    • jdk1.4.2的api帮助文档
    • Sun 技术社区(中文版)
    • 学习WEB开发的好地方

    存档

    • 2004 [73]
    • 2003 [30]
    • 2001 [1]
    • RSS 什么是RSS?
      用IM提醒我内容更新
      订阅到QQ邮箱
      订阅到鲜果阅读器
      订阅到Google阅读器
      订阅到抓虾阅读器
    • 《城客》第四期:创意之城
      博客大巴
      博客大巴使用指南
      博客大巴模板中心
      免费注册博客大巴
      一键博客搬家工具
      中文互动杂志城客
    Copyright © 2002-2009 BlogBus.com, All Rights Reserved. 博客大巴 版权所有
    博客大巴模板设计:MAC风格 | 作者:blogbus.com