俺对Hibernate的几点思考:

  俺对Hibernate的几点思考:
(1)       hiberante出现的目的是什么?
Hibernate作为一种ORM组件出现,其目的是为了弥补面对对象程序和关系型数据库之间的“不耦合”性,使程序员能用面对对象的方式去操纵数据库,弥补“对象”和“关系”之间的“不对称性”,使“关系型数据库”转变为“对象型数据库”(起码“看上去”是)。便于提高程序的可维护性。
(2)       hibernate做了什么?
程序员在写代码时,例如将数据保存到数据库中,session.save(use)。Hibernate将把这一行代码转变为sql的中insert语句,将user的信息插入到数据库中。而在我们的程序中将不在有数据库的影子。(程序中是面对对象的,sql是面向过程的,也就是说我们的程序中消除了“过程”的东西,而只有“对象”)。
(3)       我们需要做的东西减少了吗?
无论我们是否使用hibernate,数据库没有改变过,这决定了虽然我们编写的代码的方式改变了,我们访问数据库的过程并没有真正的改变(保存对象的插入语句并没有改变),只是hibernate帮我们做了一些原本需要我们做的。根据“能量守恒定律”,hibernate帮我们做了一些工作(这个过程是AI的),意味着我们在性能上是需要付出一定的“代价”的。
(4)       Hibernate能做什么?
Hibernate封装了底层的JDBC、自动地帮助我们把对对象的操作转化为sql,并对数据库进行操作,使我们可以使用面对对象的方式来对数据库操作……但是,为什么hibernate还提供了HQL、navite SQL、调用存储过程等等的接口给我们呢?因为,完全的使用面对对象技术(通过hibernate这一工具来把“关系数据库”转换为“对象数据库”)来进行程序开发目前在“技术上”还不成熟,因为没有“对象数据库”。(虽然hibernate使“关系数据库”看上去像“对象数据库”,但也只是“看上去”像,并不是真的是)比如我们计算某个企业部门下的员工的工资,目前情况下使用面对对象技术,我们通常的做法是:首先将该部门下所有员工从数据库中查询出来,然后利用Iterator方法,逐个进行计算,这就有个弊端,即将所有的计算放在程序中去进行,这会造成系统运行瓶颈,why?因为数据库的作用没有发挥出来。(hibernate只是一个使“关系数据库”看上去像“对象数据库”的“镜子”,它本身不是“对象数据库”,更没有办法提供“关系数据库”中的计算能力,它本身只能提供一些方法,然后将这种方法转换为“关系数据库”的方法,然后去运行。这里说的很罗说,不知道是否将意思表达清楚没。。。)确切的说是关系数据库的计算能力没有发挥出来。如果我们这里使用面向过程的方法,使用数据库的sql语句,使用存储过程等,那么,将很容易消除系统的瓶颈。
(5)       hibernate带给了我们什么?我们该如何使用?
Hibernate带给了我们许多,可以用面对对象的方式来操作数据库,也可以用面向过程的方式来操作数据库,why?hibernate如果只是为了“面对对象”的话,为什么还要提供给我们面向过程的东西?现在我们老是一说到hibernate,就是谈论面对对象,仿佛面对对象就是一切,这个我觉得是背离了hibernate作者的初衷了,hibernate只是一种组件,它提供了许多东西给我们去构架系统,如果我们在构架的时候使用“面对对象”比较方便,那么就面对对象;如果“面对过程”比较好用,那么就面向过程好了,这个,我觉得才是使用hibernate的本质。从另个方向,使用hibernate的系统中,有的系统完全遵循hibernate,关联极其复杂,有的系统只是把hibernate作为jdbc替代品,没有关联,我觉得在这两者之间取个平衡点最好。“中庸之道”也。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值