`
uule
  • 浏览: 6307850 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

Hibernate实现原理 与 缺点

 
阅读更多

 

Hibernate是怎样实现呢?主要是依据反射机制。

      现在以一次数据库查询操作分析Hibernate实现原理。

      假设有一个用户表(tbl_user),表中字段有id,name,sex。同时有一个实体类(User)与其相对应,查询语句是:  select * from User。

1.在项目启动时,Hibernate配置文件中的内容已经存储在容器中,存储着表与实体中的关系。

2.在执行select * from User 时,会根据反射机制先找到User的全路径名称,进而找到容器中User对应的配置。

3.由于配置文件中的实体属性与数据库中的字段是对应的,Hibernate会将select * from User 这个hql语句根据不同的数据库方言解析成不同的SQL语句(select * from tbl_user)。

      大致过程就是这样,当然,器内部实现的具体过程是比较复杂的,在使用Hibernate进行数据库操作时,应注意级联、延迟加载、缓存的使用。

            

简单来说就是,利用反射原理,将实体类中的字段按照xml配置或者annotation解析成一条或者多条sql语句,然后放入数据库执行,说的简单点,就是这么个原理,但是内部实现比较复杂    

 

 

原理:

1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件

2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息

3.通过config.buildSessionFactory();//创建SessionFactory

4.sessionFactory.openSession();//打开Sesssion

5.session.beginTransaction();//创建事务Transation

6.persistent operate持久化操作

7.session.getTransaction().commit();//提交事务

8.关闭Session

9.关闭SesstionFactory

 

这个就是原理,不是流程。主要就是一个基于JDBC的主流持久化框架,一个优秀的ORM实现,对JDBC访问数据库的代码做了封装,很大程度上监护了DAO层的编码工作。

 

hibernate缺点:

总的来说,hibernate的缺点主要有以下几点:

一、由于对持久层封装过于完整,导致开发人员无法对SQL进行优化,无法灵活使用JDBC的原生SQL,Hibernate封装了JDBC,所以没有JDBC直接访问数据库效率高。要使用数据库的特定优化机制的时候,不适合用Hibernate 

二、框架中使用ORM原则,导致配置过于复杂,一旦遇到大型项目,比如300张表以上,配置文件和内容是非常庞大的,另外,DTO满天飞,性能和维护问题随之而来

三、如果项目中各个表中关系复杂,表之间的关系很多,在很多地方把lazy都设置false,会导致数据查询和加载很慢,尤其是级联查询的时候。

四、Hibernate在批量数据处理时有弱势,对于批量的修改,删除,不适合用Hibernate,这也是ORM框架的弱点

 

 

Hibernate是ORM框架(object-relation maping对象关系映射),它是用来实现JDBC的功能,但是它不能替换JDBC,它是在JDBC基础上实现的,即Hibernate中已经把JDBC封装了,最终的代码是到HIbernate在传递到JDBC在于数据库交换,所以性能没有JDBC直接与数据库交互快

 

 

 

 

分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     21.5 利用Hibernate的版本控制来实现乐观锁  21.5.1 使用元素  21.5.2 使用元素  21.5.3 对游离对象进行版本检查  21.5.4 强制更新版本  21.6 实现乐观锁的其他方法  21.7 小结  21.8 思考题 第22章 管理...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     21.5 利用Hibernate的版本控制来实现乐观锁  21.5.1 使用元素  21.5.2 使用元素  21.5.3 对游离对象进行版本检查  21.5.4 强制更新版本  21.6 实现乐观锁的其他方法  21.7 小结  21.8 思考题 第22章 管理...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     21.5 利用Hibernate的版本控制来实现乐观锁  21.5.1 使用元素  21.5.2 使用元素  21.5.3 对游离对象进行版本检查  21.5.4 强制更新版本  21.6 实现乐观锁的其他方法  21.7 小结  21.8 思考题 第22章 管理...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     21.5 利用Hibernate的版本控制来实现乐观锁  21.5.1 使用元素  21.5.2 使用元素  21.5.3 对游离对象进行版本检查  21.5.4 强制更新版本  21.6 实现乐观锁的其他方法  21.7 小结  21.8 思考题 第22章 管理...

    MyBatis经典面试题详细

    MyBatis简介 MyBatis是什么? ORM是什么 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里? 传统JDBC开发存在的问题 JDBC编程有哪些不足之处,MyBatis是如何解决这些...如果支持,它的实现原理是什么?

    1000道 互联网Java架构师面试题.pdf和JAVA核心知识整理.zip

    如果支持,它的实现原理是什么? 23、Mybatis 的一级、二级缓存 24、什么是 MyBatis 的接口绑定?有哪些实现方式? 25、使用 MyBatis 的 mapper 接口调用时有哪些要求? 26、Mapper 编写有哪几种方式? 27、...

    Java面试宝典2020修订版V1.0.1.doc

    15、Hibernate的工作原理? 92 16、hibernate优缺点? 92 17、Hibernate是如何延迟加载的? 93 18、如果优化Hibernate? 93 19、什么是ORM? 94 20、Hibernate的主键生成策略? 94 21、Hibernate的级联操作 94 22、...

    用jsp开发与实现教学管理系统

    3. 数据库设计与实现……………………………………………………………………………………9 3.1 数据库功能设计……………………………………………………………………………… 9 3.2 数据库概念结构设计………………...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    关键词:SSH集成框架 Web 1主流Web开发框架分析 1.1 MVC结构模式和WebWork框架 2012年王欢认为MVC的工作原理是,使用MVC时,当用户向Web容器发送一个请求后, Web容器会根据请求和地址去调用一个Servlet进行处理,...

    Java常见面试题208道.docx

    23.说一下 HashMap 的实现原理? 24.说一下 HashSet 的实现原理? 25.ArrayList 和 LinkedList 的区别是什么? 26.如何实现数组和 List 之间的转换? 27.ArrayList 和 Vector 的区别是什么? 28.Array 和 ArrayList ...

    用Java开发与实现教学管理系统动态网站

    3. 数据库设计与实现……………………………………………………………………………………9 3.1 数据库功能设计……………………………………………………………………………… 9 3.2 数据库概念结构设计………………...

    77道Spring面试题以及参考答案(2024年最新版)

    这篇文章总结了77道Spring面试题及答案,涵盖...6. AOP部分对面向切面的核心概念如通知、连接点、切点等进行了解释,并介绍了Spring AOP的实现原理。 总的来说,这篇文章内容丰富全面,适合作为Spring面试的重要参考资料,

    cglib.jar下载

    CGLIB介绍与原理(部分节选自网络) 一、什么是CGLIB? CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要...

    分布式微服务架构设计原理

    2、SSH架构:Structs(UI交互层)、Spring(业务逻辑实现)、Hibernate(对象领域的模型与关系型数据库模式映射)StructsMVC模型:Spring:逻辑层实现核心容器,核心思想IOC和AOPa、IOC(控制反转):EJB实现:实现...

    基于Java EE的仓库管理系统

    五、系统界面与功能实现 …………………………………………………… 5.1 页面流程图 …………………………………………………………… 5.2 创建系统登陆模块 …………………………………………………… 5.2.1 系统...

    千方百计笔试题大全

    98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101、如何优化Hibernate? 23 102、Struts工作机制?为什么要使用Struts? 23 ...

    java面试宝典

    98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101、如何优化Hibernate? 23 102、Struts工作机制?为什么要使用Struts? 23 ...

    mybatis原理概述入门教程

    主要介绍了在今天这篇博文中,我将要介绍一下mybatis的框架原理,以及mybatis的入门程序,实现用户的增删改查,她有什么优缺点以及mybatis和hibernate之间存在着怎么样的关系,大家这些问题一起通过本文学习吧

Global site tag (gtag.js) - Google Analytics