一.hibernate是什么?
hibernate这个单词看着很深奥,感觉这个技术很牛逼,但是你了解过后,你就不这么觉得了,有句诗词叫做:"横看成岭侧成峰,远近高低各不同."那么hibernate从不同的角度看,有着不同的让人费解的解释:
- 它是连接java应用程序和关系数据库的中间件
- 它是JDBC API进行封装,负责java对象的持久化.
- 在分层的软件架构中它位于持久化层,封装了所有数据访问细节,是业务逻辑层可以专注于实现业务逻辑.
- 它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射.
二.关于分层
以上的4点解释主要是从不同的角度进行阐述的,但是光靠理论还是没法了解的,要了解就得从我们学过的知识---分层开始.综观40多年来计算机应用软件的发展和演变过程,应用程序逐渐从单层体系结构发展到多层结构.大型机上的单层应用程序,以文件系统来存储数据,双层应用中,以数据库层存放持久性业务数据,应用层序 作为单独的一层,在这个层中负责生成用户的代码和负责业务逻辑的代码混合在一起.双层应用程序如下图所示:
三层结构在界面代码与业务逻辑代码掺合在一起,使程序结构不清晰,而且维护很困难的时候应运而生,这就应验了一句:办法总是比困难多.它把原来掺合在一起的应用程序划分为表述层和业务逻辑层.三层应用程序如下图所示:
三.再次分层--持久化层
在上一节就介绍过关于分层的内容.业务逻辑层不仅负责业务逻辑,而且直接访问数据库,提供对业务数据的保存,更新,删除和查询操作.为了把数据访问细节和业务逻辑分开,可以把数据访问作为单独的持久化层.重新分层的软件结构如下图所示:
持久化层封装了数据访问细节,为业务逻辑层提供面向对象的API.目前在持久层领域,已经出现了许多优秀的ORM软件,有的是商业,有的是开发源代码的.hibernate就是一种原来越受欢迎的开发源代码ORM软件.ORM软件具有中间件的特性(中间件是在应用程序和其他软件系统之间的连接管道).hibernate可看成是连接java应用和关系数据库的通道.
四.hibernate访问数据库
hibernate作为中间件,可以为任何一个需要访问关系数据库的java应用服务,hibernate如下图所示:
作为hibernate的使用,无须关心它是如何实现的,只需要知道 如何访问它的接口就行,配置其他的数据库时候,只需要修改配置文件就行.
五.总结
从C/S阶段到B/S阶段,我们做项目的时候,都会把数据配置在web.config文件中.不再是像以前那样,把数据配置卸载方法中,针对D层的数据库的增删改查,我们都会抽取出来单独写到一个模块叫sqlhelper中.每写一个方法,如果有相关的增删改查我们都会调用sqlhelper方法.然而我对hibernate的理解就是对D层进行一个更加彻底的封装,其中把sql,sqlhelper一块封装到一个类中,当我们使用的时候,直接调用类的方法就可以了,不用需要再很麻烦的写sql句了.所以,对于hibernate我不认为是一个新的内容,它只是对D层和sqlhelper进行了一次更加彻底的封装而已.