Hibernate是一种强大的可提供对象-关系持久化和查询服务的中间件,它可以使程序员依据面向对象的原理开发持久化类,实现对象之间的关联、继承、多态、组合、集合等。
Hibernate提供了它特有的数据库查询语言HQL,这种查询语言屏蔽了不同数据库之间的差别,使你可以编写统一的查询语句执行查询。不同于其他持久化解决方案的是Hibernate并没有把SQL的强大功能屏蔽掉,而是仍然兼容SQL,这使你以往的关系技术依然有效。
一、Hibernate的版本更新情况
Hibernate版本更新速度很快,目前为止有两个阶段性的版本:Hibernate2和Hibernate3,这一点程序员从其Jar文件名便可以看出来。至本文写成之日最新发布的版本是Hibernate3.4。
Hibernate2系列的最高版本是Hibernate2.1.8,Hibernate3系列在编写本书时的最高版本是Hibernate 3.2.5 GA版,GA也就是General Availability,即推荐广泛使用的版本,但目前使用较多且较稳定的版本是Hibernate 3.1.3或Hibernat 3.1.2。
另外,自Hibernate3发布以来,其产品线愈加成熟,相继出现了Hibernate注释、Hibernate实体管理器、Hibernate插件工具等一系列产品套件。在方便程序员使用Hibernate进行应用程序的开发的同时,也逐渐增强了Hibernate产品线的实力。
但目前市面上用于学习Hibernate开发的图书并不多见,大多是介绍老版的Hibernate2,最近希赛和博文联手推出的《贯通Hibernate开发》,对最新的Hibernate3作了详尽的解答,推荐读者阅读。
二、Hibernate3的新特性
Hibernate3在产品的应用性上有了极大提高,并且基于Java1.5进行了改进,且与EJB3.0进行了集成,在功能上有了很大的提升。同时,Hibernate还对当今另一主流开发平台--微软的.NET平台进行了支持,因此具有更加强大的生命力。
相对于Hibernate2,Hibernate3版本的变化包括三个方面:
(1)API的变化
API的变化中比较重大的变化是包名的变化,主要是包的根路径发生了改变,这一点程序员只需要在Eclipse中查看Hibernate3.jar这个文件中所包含的类就知道了:Hibernate 3的根路径从Hibernate2的net.sf.hibernate变成了org.hibernate。由于这两个路径完全不同,所以程序员能够在同一个应用程序中同时使用Hibernate2和Hibernate3。如果希望把已有的应用升级到Hibernate3,那么升级的第一步是把Java源程序中的所有net.sf.hibernate替换为org.hibernate。
另外,在Hibernate3中,HibernateException异常以及它的所有子类都继承了Java.lang.RuntimeException。因此在编译时,编译器不会再检查HibernateException。在Hibernate3中,Session接口的createSQLQuery()方法被废弃,被移到org.hibernate.classic.Session接口中。Hibernate3采用新的SQLQuery接口来完成相同的功能。在UserType和CompositeUserType接口中也都加入了一些新的方法,这两个接口被移到org.hibernate.usertype包中,用户定义的UserType和CompositeUserType实现类必须实现这些新方法。Hibernate3提供了ParameterizedType接口,用于更好的重用用户自定义的类型。
以上的这些主要变化将会影响到应用程序,程序员必须要进行相应的调整,才能使基于Hibernate3的应用程序正常运行。
(2)元数据
元数据主要是指Hibernate映射文件中各种元素和属性的用法的变化。首当其冲的是Hibernate映射文件的文档类型定义,即DTD文件发生了变化,这一点程序员可以从任何一个Hibernate3的映射文件的文件头中发现,即在元素中定义的URL从http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd变成了http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd。
还有一个重大的改变就是lazy属性的默认值从false变成了true,这也是Hibernate从优化应用程序性能的角度出发所做出的决定。因为当lazy=false时,Hibernate对所有字段都采取预先抓取的策略,如果程序员希望采用延迟加载,必须手工在映射文件中将lazy属性的值设为true,然而总是采用预先抓取策略势必会造成极大的资源占用,从而降低应用程序的性能。所以从应用程序的角度来讲,更希望lazy的默认值是true,这样在有需要的时候才去采用预先抓取的检索策略。
(3)HQL查询语句
Hibernate3 采用新的基于ANTLR的HQL/SQL查询翻译器,不过,Hibernate2的查询翻译器也依然存在。在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。
三、Hibernate的发展趋势
Hibernate是一个非常优秀的持久层解决方案。具有以下发展趋势:
(1)与其他开发框架的集成将越来越成熟:如与struts、spring、jbpm的集成,充分发挥Hibernate自身的优势,也吸取了对方框架的优势,在软件系统的各个层各司其职。
(2)产品线的逐渐完善:通过增加若干的工具套件,并支持.net平台,使Hibernate具有更强大的生命力。
(3)与EJB更好的集成:集成EJB,开始将重点转向重量级应用,使得Hibernate在企业级应用中必将占据一席之地。
Hibernate的轻量级 ORM 模型逐步确立了在Java ORM架构中领导地位,甚至取代复杂而又繁琐的EJB模型而成为事实上的Java ORM工业标准。而且其中的许多设计均被J2EE 标准组织吸纳而成为最新EJB3.0规范的标准。
随着Hibernate的广泛应用,越来越多的Java中间件厂商和Java项目(如JBoss、JBPM等)开始把目光集中到Hibernate上并将其纳入自身的体系,使Hibernate具有了越来越广阔的发展前景。
分享到:
相关推荐
Hibernate社区活跃,不断推出新版本以适应技术发展趋势。此外,还有众多开源项目和工具,如Hibernate Tools、Hibernate Validator等,为开发带来更多便利。 总结,Hibernate 4.2.3作为一款强大的ORM框架,不仅简化...
#### 四、Hibernate版本3.2特性介绍 Hibernate 3.2版本是在Hibernate 3.0的基础上进行改进和优化的结果,引入了一些新的特性和功能,提高了性能和稳定性。 - **新特性**: - **增强的性能**:通过对核心架构的...
然而,随着技术的发展,现代的Web开发趋势已经转向Spring Boot和Spring MVC,这些框架提供了更简洁的配置和开箱即用的功能,但仍有必要理解Struts2+Spring2+Hibernate3的基础,因为它们代表了Java Web开发历史上的一...
本篇内容将详细介绍Hibernate的历史背景、定义、原理、特点、优缺点以及其在实际应用中的发展趋势。 历史背景: Hibernate 的诞生源于开发者对于减轻繁琐的手动数据库操作的需求,通过自动化过程来解决对象与关系...
十、最新特性与发展趋势 了解Hibernate的最新版本特性,如JPA2.1支持、Entity Graph、新查询API(Criteria API 2.0)等,有助于保持技术的前沿性。 通过学习以上内容,读者将能够熟练运用Hibernate进行对象持久化,...
- **技术趋势**: 分析ORM技术的发展趋势以及Hibernate在其中的角色。 --- 综上所述,Hibernate作为一款强大的ORM框架,不仅能够极大地简化Java应用与数据库的交互过程,还能提供丰富的高级功能以应对复杂的应用...
Hibernate 4.0在设计上全面拥抱了Java 1.6及以上版本,这是基于Java语言的发展和Java EE 6标准的要求所做出的决策。由于Java 1.6引入了许多新特性和API,使得Hibernate能够充分利用这些特性来优化其功能和性能。然而...
同时,随着技术的发展,现在的趋势是转向Spring Boot和Spring MVC的组合,它们提供了更简洁的配置和更强大的功能。 以上就是SSH整合的相关知识点,通过深入理解和实践,开发者可以构建出高效、可扩展的Java Web应用...
- **EJB 3.1**:介绍EJB 3.1的新特性及其对企业应用开发的意义。 - **开源趋势**:分析近年来开源软件在软件开发领域的地位变化。 以上总结了从标题、描述以及部分文件内容中提取的关键知识点,覆盖了Struts2、...
而Spring Framework则是一个全面的后端开发框架,2.0.6版本是Spring发展中的一个重要里程碑,它集成了AOP(面向切面编程)、IoC(控制反转)以及DAO(数据访问对象)等核心特性,为开发者构建企业级应用提供了强大的...
随着Java社区的发展,现在的趋势是更多地采用注解配置,以减少XML配置的繁琐。 总的来说,Struts+Spring+Hibernate架构为企业级应用提供了强大的支持,它集成了MVC设计模式、依赖注入和对象关系映射,实现了高效、...
随着互联网技术的不断发展,**RIA(Rich Internet Application,富互联网应用)**逐渐成为一种重要的技术趋势,它结合了传统桌面应用的优势与Web应用的便利性,为用户提供更加丰富的交互体验。其中,Adobe的**Flex**...
在本章中,作者提出了对未来Java开发的一些展望,包括新的技术趋势和发展方向。 - **技术趋势**:预测未来几年Java领域的关键技术发展。 - **学习路径**:建议读者如何进一步提升自己的技能水平。 - **社区参与**:...
Java软件技术作为IT行业的基石之一,其发展趋势始终是业界关注的焦点。从“Java软件技术发展趋势探讨”的文章中,我们可以提炼出多个关键知识点,这些知识点不仅涵盖了Java技术本身的变化,还包括了与之相关的框架和...
SSH框架,全称为Spring、Struts和Hibernate,是Java开发中的一个经典组合,常...然而,随着技术的发展,Spring Boot和Spring Cloud等新兴框架正逐渐成为新的趋势,但这并不削弱SSH框架在历史和实践中积累的重要价值。
随着云计算和大数据的发展,这类系统的应用前景广阔,有极大的市场需求。 **2. 可行性分析** - **技术可行性**:Java作为后端编程语言,具有跨平台的特性;JSP用于构建动态网页,结合Servlet进行业务逻辑处理;...
本文讨论了使用 JSP 和 Hibernate 设计实现在线通讯录系统...在线通讯录系统的发展前景广阔,随着科学技术的不断增强,计算机科学的日渐成熟,网上通讯工具迅速发展,在线通讯录系统将在各个领域发挥越来越重要的作用。
然而,随着技术的发展,现代的Web开发趋势转向了Spring Boot、Spring MVC、MyBatis等更加轻量级和灵活的框架,SSH逐渐被视为较传统的选择。尽管如此,理解SSH框架的工作原理对于深入理解Java Web开发仍然是非常有...