Hibernate探索之路(一)——简介

来源:互联网 发布:java缓冲流的作用 编辑:程序博客网 时间:2024/05/17 08:47

引言:

               学习知识的全局观——论一个简介的重要性。

概述:

               官方云:Hibernate是一个轻量级的开源的O/R映射框架;通俗理解,它对JDBC进行了对象封装,能实现特定的功能需求,例如数据持久化。

内容:

               一:官方定义释义:

              1  何为轻量级:轻量级框架是相对于重量级框架的一种设计模式,轻量级框架不带有侵略性API,对容器也没有依赖性,易于进行配置,易于通用,启动时间较短。这是轻量级框架相对于重量级框架的优势。Hibernate没有侵入性,也就是环境改变了,它受影响较小,需要变动的地方不足以影响项目的正常运行。

              2 何为开源:描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。

              3 O/R映射:对象关系映射(ORM),简单地讲,就是将数据库的表数据映射成一个JAVA对象,然后对JAVA对象的操作就等于对数据库数据的操作!

         二:优缺点:

              1 优点:(1)提高开发效率(对JDBC封装的比较彻底):hibernate提供了大量的封装,对很多数据操作以及关联关系都进行了封装,开发者不需要写大量的SQL语句,提高了开发者的工作效率。

                            (2)使开发更加对象化(不用考虑关系领域):hibernate将表数据抽象成对象,大家熟知JDBC只能通过SQL语句将元数据传送给数据库,进行数据操作。而hibernate可以在底层将元数据和对象进行转化,使得开发者只用面向对象的方式来操作数据。

                            (3)可移植性:hibernate使用xml或JPA的配置以及数据库方言等等的机制,使得hibernate具有更好的移植性,对于不同的数据库,开发者只需要使用相同的数据操作即可,无需关心数据库之间的差异,避免了直接使用JDBC就不得不考虑数据差异的问题。

                            (4)没有侵入性,支持透明持久化,提供了缓冲机制:hibernate提供了缓冲机制(session缓冲,一级缓存,查询缓冲),对于那些改动不大期经常使用的数据,可以将它们放到缓冲中,不必在每次使用时都去查询数据库,缓冲机制对提升性能大有裨益。

              2 缺点:(1)使用数据库特性语句(存储过程等),很难调优:它对JDBC封装程度较高,失去了对SQL的控制,当然hibernate也可以使用native sql,即使用createSQLQuery等方法来调用与数据库相关的sql,但这样也就影响了hibernate的可移植性,使得hibernate在很多地方不够灵活,难于优化,尤其对于一些复杂的关联查询时,hibernate提供的功能远不及直接使用JDBC方便性更高

                            (2)对大批量数据操作存在问题(缓冲问题):hibernate没有提供专门的批处理机制,如果要批量更新或插入数据时,还需要显示的flush,clear之类的操作,性能不如JDBC。

                            (3)系统中存在大量的统计查询功能,不适用hibernate,采用JDBC更合适:相对于JDBC,hibernate更消耗内存,因为他每次的数据库操作都要做数据和对象的转换和封装,查询出一条数据就要创建一个或多个对象,太消耗内存。

                            (4)hibernate提供了太多的好处,但是好处本身也是有局限的,可能遇到无法排查的异常情况。

         三:用来做什么:

              1 将对数据库的操作转换为对java对象的操作,通过修改一个“持久化”对象的属性从而修改数据库表中的对应的记录数据,从而简化开发

              2 提供线程和进程俩个级别的缓冲提升应用程序性能

              3 有丰富的映射方式将java对象之间的关系转换为数据库表之间的关系。

              4 屏蔽不同数据库实现之间的差异,在hibernate中只需要通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生成适合的SQL语句。

              5  非侵入性:hibernate不要求持久化类实现任何接口或继承任何类,POJO即可。

总结:

               hibernate的核心思想:可以使我们采用对象化的思维操作关系型数据库,从而提高我们开发效率。不过使用的过程中,需要依据实际情况作出选择。

 

0 0