客观面试题--28.Hibernate的运行流程?

Hibernate运行原理

Hibernate是一个开放源代码的对象关系映射框架,她对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库,hibernate可以应用在任何使用JDBC的场合,既可以在java的客户端程序使用,也可以在Servlet/jsp中的Web应用中使用。最具革命意义的是,hibernate可以在应用的EJB的j2ee架构中取代cmp,完成数据持久化的重任。下面通过一张图来分析Hibernate的运行原理:



上面的执行过程图已经很清晰的阐释了hibernate的运行过程:

首先,应用程序先调用Configration类,该类读取hibernate的配置文件及映射文件中的信息(如果我们使用注解的话则不需要读取映射文件),并使用这些信息生成一个SessionFactory对象。

接着,从SessionFacctory生成一个Session对象,并用Session对象生成Transaction对象。通过Session对象的get()、sava()、update()、delete()和saveOrupdate()等方法对PO进行加载,保存,更新,删除等操作;

在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作。如果没有异常,Transaction对象将提交这些操作结果到数据库中,否则会回滚事务。

Hibernate优缺点

优点:
  • 更加对象化:以对象化的思维操作数据库,我们只需要操作对象就可以了,开发更加对象化。
  • 移植性:因为Hibernate做了持久层的封装,你就不知道数据库,你写的所有的代码都具有可复用性。
  • Hibernate是一个没有侵入性的框架,没有侵入性的框架我们称为轻量级框架。对比Struts的Action和ActionForm,都需要继承,离不开Struts。Hibernate不需要继承任何类,不需要实现任何接口。这样的对象叫POJO对象。测试更加方便,提高了效率。
缺点:
  • 由于对持久层封装过于完整,导致开发人员无法对SQL进行优化,无法灵活使用JDBC的原生SQL,Hibernate封装了JDBC,所以没有JDBC直接访问数据库效率高。要使用数据库的特定优化机制的时候,不适合用Hibernate。
  • 框架中使用ORM原则,导致配置过于复杂,一旦遇到大型项目,配置文件和内容是非常庞大的,另外DTO满天飞,性能和维护问题随之而来。
  • 如果项目中各个表中关系复杂,表之间的关系很多,在很多地方把lazy都设置false,会导致数据查询和加载很慢,尤其是级联查询的时候。
  • Hibernate在批量数据处理时有弱势,对于批量的修改,删除,不适合用Hibernate,这也是ORM框架的弱点。

猜你喜欢

转载自blog.csdn.net/qq_32939679/article/details/80691070
今日推荐