【Hibernate】——美丽的故事之创始人

本文介绍了Hibernate框架的基本概念,包括其作用、数据持久化的定义及重要性,并探讨了Hibernate如何简化对象与关系数据库之间的映射。此外,还讲述了Hibernate创始人Gavin King的故事,激励读者面对挑战时保持激情与坚持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        话说SSH三大框架,Spring,Struts and hibernate,today is the one of SSH named hibernate.
        已经从头到尾的对Hibernate有了宏观的认识,有必要好好总结和回顾一下这个具有美丽的故事的框架。

Hibernate 概述

        Hibernate 在英文中的意思是“冬眠”的意思,Hibernate是一种面向Java环境对象/关系数据库映射工具,用来把对象模型标识的对象映射到基于SQL的关系模型数据结构中去。采用ORM映射机制,内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API。
        Hibernate是一个轻量级框架,轻量级框架最大的特定就是没有侵入性,像servelt重量级的框架是不能单独运行的。它完成了数据持久化的重任。

什么是数据持久化?

        持久化(Persistence),狭义的理解:“持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作(持久化就是将有用的数据以某种技术保存起来,将来可以再次取出来应用,数据库技术,将内存数据以文件的形式保存在永久介质中都是持久化的例子)。

为什么要持久化?

持久化技术封装了数据访问细节,为大部分业务逻辑提供面向对象的API。
通过持久化技术可以减少访问数据库数据的次数,增加应用程序执行速度。
代码重用性高,能够完成大部分数据库操作。
松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码。

HIbernate框架中数据持久化机制:

         在业务程序与数据库之间,hibernate框架使用Session会话,来完成数据的提交、更新、删除和查询等。
         1、向数据库提交数据
    在程序中保存对象时,会把数据保存到Session会话中,然后根据框架的配置文件,自动或手动决定什么时候把这种保存提交到数据库。
     2、从数据库中查询数据
    在查询数据之前,需要清理缓存(手动清理,或者通过配置文件框架自动清理)清理缓存的目的是为了使Session会话中的数据与数据库中的数据保持一致。然后程序只需要查询Session会话中的数据即可。
     总之,数据持久化是解决程序与数据库之间交互访问的问题,使程序不直接访问数据库,而是直接访问Session会话,然后由Session会话与数据库“打交道”。只要确保,程序每次访问Session中的数据时,与数据库中的数据保持一致,就不会出现错误。

重点:

核心接口和类
持久化的三种状态
几种关系映射
延迟加载
缓存
性能优化
对JAP_Annotation的支持


Hibernate优缺点

优点:

提高生产力,使开发更加对象化
可移植性
没有侵入性
支持透明持久化

缺点:

使用数据库特性语句的时候将很难调优
对大批量数据库更新存在问题
系统中存在大量的统计查询功能

美丽的故事---Hibernate创始人

         这里有必要上网查一下Hibernate创始人Gavin King的故事,一个能给力动力的故事:
         时间回到2001年,地点是澳大利亚悉尼的Clarence Street有一家叫做Cirrus Technologies的公司,这是一家做J2EE企业级应用开发和咨询的公司,在会议桌上一个小伙子和老板正在进行着激烈的讨论。
         小伙子:"老板,我总觉得开发的效率太低了,我用了EJB的Entity bean 1.1时,我总觉得我浪费了好多时间在处理Entity Bean的体系架构上,却没有花时间在核心业务逻辑的开发上,而且CMP给我们的限制太多了"。
         老板:"Gavin,别傻了,EJB是业界的标准,也是最流行的技术,而且我们公司是IBM的合作伙伴。如果有问题,问题就是我们还没有适应这样的开发模式"。
         小伙子:"不,我觉得肯定有更好的解决的方案。我们可以设计出比Entity Bean更好的方案"。
         老板:"哦,Gavin,我知道你很聪明,开发水平也不错。但是开发这样的系统太难了,而且你根本就没有用SQL开发过任何数据库系统。不要想这样一个不现实的目标啦!"
         小伙子皱了皱眉,说道:"不,我相信我有能力开发出这个系统。我的想法绝对是可行的。"
         (注:以上场景纯属虚构,但至少以下内容完全属实:Gavin King开发hibernate的动机有两个:发现CMP太烂;赢得对老板的争执。Gavin King当时没有任何用SQL开发数据库的经验,Gavin King开发hibernate的第一件事是去街上买了本SQL基础的书)
         也许Cirrus Technologies的老板做梦也想不到两年以后,这个小伙子开发出的那个产品会成为全世界最流行的O/R Mapping工具,而那个对SQL和数据库一窍不通的小伙子居然会成为全世界J2EE数据库解决方案的领导者。
         这就是Gavin King,一个充满激情、脾气很倔、永不言败的人。他的成就也许全世界搞Java的人都知道:他是hibernate的创始人;他是EJB 3.0的Entity bean specification的实际领导人(sun任命的领导人应该是Linda DeMichiel);他也是那本经典的书hibernate in action的作者;他也参加了XDoclet和Middlegen的开发;他在全世界各种著名的会议(TheServerSide Symposium等)进行演讲和讲座。

总结

         一个有激情有梦想的并且有勇气的人往往都会成功,也许我们缺少的就是这样一种永不言败的精神。Gavin King,一个给人鼓舞和启示的人。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值