奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> Java >> 从Hibernate2到3移植的两点初体验
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • Tomcat5.0.28下AXIS完

  • JSP环境的配置过程(J

  • 用JAVA写一个日志类程

  • 实现Hibernate分页查询

  • Struts + Hibernate 代

  • Hibernate 使用外部 C

  • 利用Eclipse开发Hiber

  • Java开源项目Hibernat

  • 从Hibernate2到3移植的两点初体验
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-21

      H3提供了很多令人兴奋的特性,从RC1提供download开始便在机器上创建了新的H3test project,由于时间问题,H3的E文doc也只看到第五章节(都是打印A4纸阅读的,饭前厕中枕边 苦~),而且一直到前天才开始正式代码移植...
      
      这两天感受并不多,本来没想发到javaeye,但是关于H3的lazy机制,觉得还是有点费解,并不是机制本身,而是其进行如此大的变动的目的
      
      从H2到H3,在下目前接触到的只有两点比较重要(包名更改比较容易,批量替换吧):
      1.session interface API的变更 find/iterate 等一些method在H3中已经不再支持 但是在org.hibernate.classic.Session这个接口还是为用户提供了以上的method,但是我想classic也不是长久之策,呵呵,以Gavin的观点,所有的query操作,createQuery()才是王道
      
      2.Lazy机制,这个就比较迷茫的...
      看看测试代码先
      java代码:
      
      
      HBM文件:
      <hibernate-mapping package="h3test.example.db.PO">
      <class name="UserPO" table="users" >
      <id name="id"
      type="long"
      column="ID">
      <generator class="increment"/>
      </id>
      
      <property name="name" type="string"/>
      <property name="nickname" type="string"/>
      <property name="vip" column="isVIP" type="boolean"/>
      </class>
      </hibernate-mapping>
      
      代码
      UserPO u=(UserPO)op.getSession().load(UserPO.class,new Long(3));
      op.close();
      System.out.println(u.getName());
      
      以上代码在H3会得到LazyInitializationException错误,也就是说,在H3里,session.close()之前,如果未对PO进行操作,那么PO实际上只是proxy,It's so interesting,由于没有对H3有很深的理解,在下花了很长时间,最后在hibernate的论坛中找到了以上答案,对于H3为什么采用这种新的Lazy机制,目前
      
      还不敢乱下结论 但看到Gavin 对用户释疑时这样说:
      
      Stop arguing with me, and obey the migration guide!//小新技术网www.xker.com
      
      想来应该有一定道理的(还是文档看的少,时间啊时间- -!)
      
      也许你还是怀念H2中的一次性load出PO而不是proxy,那么在hbm文件中的class 中声明lazy="false"来实现,请注意这是H3中新的属性设置,而且它的默认值是"lazy="true"";或者采用控制session生命周期的方法,把它交给filter来控制,两种方法只是个人拙见,希望各位指正
      
      嗯,关于Lazy问题在Hibernate官方论坛的帖子
      http://forum.hibernate.org/viewtopic.php?t=939532&postdays=0&postorder=asc&start=0
      
      Hibernate3 Migration Guide 持续更新的,H2->H3用户必看,可惜为什么等我都找到答案才发现这个页面呢?sigh
      http://www.hibernate.org/Documentation/Hibernate3MigrationGuide#A7
    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.