`
mixer_a
  • 浏览: 369144 次
社区版块
存档分类
最新评论

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

阅读更多

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!

想来应该有一定道理的(还是文档看的少,时间啊时间- -!)

也许你还是怀念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

分享到:
评论

相关推荐

    hibernate-entitymanager-4.3.4.Final.zip

    3. **Hibernate实体管理器4.3.4.Final**:这个特定版本的Hibernate实体管理器包含了4.3系列的一些关键改进和特性,例如对JPA 2.1的支持,性能优化,以及更丰富的查询语言(HQL)和Criteria API。 4. **DSpace**:...

    电子商城源代码和数据库

    在电子商城开发领域,Java和...以上就是关于"电子商城源代码和数据库"的相关知识点,涵盖了从后端开发到前端交互,再到数据库管理和系统运维等多个方面。通过深入学习和理解这些技术,你可以构建出自己的在线购物平台。

    基于JAVA的网上电子书店的开发与设计毕业论文.pdf

    在当今的信息时代,...这个过程中将涉及到的知识点包括但不限于JAVA技术栈的使用、MVC设计模式的应用、前端开发技术、数据库技术、网络服务器配置、电子商务的运营模式、用户体验设计、系统安全性设计等多个方面。

    java+mysql crm客户关系管理系统.zip

    下面将详细介绍这两个技术在CRM系统中的应用和相关知识点。 **Java** 1. **Java基础**:Java是一种多平台的、面向对象的编程语言,具有良好的可移植性和安全性,特别适合于构建企业级应用,如CRM系统。 2. **Java...

    基于Java开发的商城源码(支持移动端)

    【标题】"基于Java开发的商城源码(支持移动端)"所涵盖的知识点...综上所述,这个基于Java开发的商城源码涵盖了从后端开发、数据库管理、移动适配到安全支付等多方面的技术知识点,是学习和研究电商系统开发的宝贵资源。

    java班级管理系统(论文+系统).rar

    以上是对"java班级管理系统(论文+系统)"核心知识点的详细介绍,涵盖了从系统设计、开发、测试到实际应用的全过程。对于学习Java开发或者想要深入了解班级管理系统的读者,这些知识点提供了宝贵的参考。

    图书借还系统代码 java 图书借还系统代码2.zip

    3. `.classpath`和`.project`:这两个文件是Eclipse IDE的项目配置文件,`.classpath`定义了项目所需的类路径,`.project`包含了项目的元数据,如项目名称、构建配置等。这表明此代码可能在Eclipse环境下开发。 4. ...

    ShopJsp商城,java多用户商城系统.zip_ShopJsp商城_java 商城_java多用户商城系统_商城_商城系统

    5. **Hibernate ORM**:为了简化数据库操作,ShopJsp商城可能使用了Hibernate对象关系映射工具,将Java对象直接映射到数据库表,减少了手动编写SQL的复杂度。 6. **Struts或Spring MVC**:这两个都是流行的Java Web...

    基于springboot的经方药食两用服务平台源码数据库.zip

    下面将详细阐述这个平台涉及到的关键技术与知识点: 1. **SpringBoot**: - SpringBoot简化了Spring应用程序的初始搭建以及开发过程,通过"约定优于配置"的原则,提供了一系列默认配置。 - 它内置了Tomcat服务器...

    基于Android的医院预约挂号系统.doc

    10. **Struts2, Hibernate, Spring技术**:服务器端采用这些技术框架,实现后台数据处理,Struts2负责控制层,Hibernate处理数据持久化,Spring提供依赖注入和事务管理,构建高效稳定的后端系统。 11. **电子病历...

    2022年java实习心得.docx

    6. **软件生命周期**:实习让我亲身体验了软件开发的完整流程,从需求分析、系统设计、编码、测试到部署,每个环节都至关重要,且需要良好的组织和沟通。 7. **持续学习与提升**:实习过程中,我意识到编程的乐趣...

    java某店POS积分管理系统源码.zip

    9. **技术栈**:除了Java基础之外,可能还涉及到Spring框架、Hibernate ORM框架、MyBatis、Thymeleaf或JSP等技术,用于实现后端服务、数据持久化以及前端展示。 10. **测试与部署**:系统开发完成后,需要进行单元...

    精通JavaScript

    J2EE(Java 2 Platform, Enterprise Edition)是一套基于Java的标准,用于开发和部署可移植、健壮、可伸缩、安全且便维护的企业应用程序。本书虽然主要讲解JavaScript,但对于有志于全栈开发或企业级项目开发的读者...

    java宠物管理

    此外,考虑到数据持久化的需求,可能还使用了ORM(Object-Relational Mapping)框架,如Hibernate或MyBatis,将Java对象映射到数据库表,简化数据库操作。 "操作说明"意味着系统具有用户界面,可能是命令行界面...

    各种ASP.NET JAVA网盘源码收集

    在这些源码中,"网络硬盘(Struts+2+Hibernate+Spring实现).rar"可能就是一个利用这些技术实现的企业网盘实例,展示了如何整合这些框架来实现文件存储、检索和用户管理等功能。 断点续传是一种允许用户在文件上传...

    一个开源的BBS论坛系统

    3. **安全性**:由于涉及到用户交互,系统可能会使用Spring Security或Apache Shiro等安全框架,提供身份验证和授权功能。 4. **用户界面**:使用HTML、CSS和JavaScript构建用户界面,可能结合Bootstrap或jQuery等...

    基于Java的网吧管理系统.zip

    3. **Hibernate**:ORM(对象关系映射)框架,将Java对象和数据库表映射,减少数据库操作的复杂性。 4. **Servlet和JSP**:Java Web开发的基础,用于接收和响应HTTP请求,实现动态网页。 5. **JDBC**:Java数据库...

    JAVA开发超市综合管理信息系统.zip

    9. **Hibernate或MyBatis**:作为对象关系映射(ORM)框架,Hibernate或MyBatis可以简化数据库操作,将JAVA对象和数据库表之间的映射自动化,减少手写SQL的工作量。 10. **报表生成与数据分析**:为了提供决策支持...

    达内Java_笔记整理

    Struts是一个MVC(Model-View-Controller)架构的Web应用框架,分为Struts 1和Struts 2两个版本。它提供了一种标准的方式来构建和维护大型企业级Web应用程序。 #### Ajax Ajax(Asynchronous JavaScript and XML)...

    jsp工时管理系统

    3. **页面交互**:使用JSP创建动态页面,实现数据的增删改查操作,同时提供友好的用户体验。 4. **报表生成**:系统应能生成各种工时统计报表,如个人工时报告、部门工时汇总等,方便管理层决策。 5. **异常处理**:...

Global site tag (gtag.js) - Google Analytics