Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架
hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
 
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
持久化是将程序数据在持久状态和瞬时状态间转换的机制。
JDBC就是一种持久化机制。文件IO也是一种持久化机制。
 
一、Hibernate是对JDBC进一步封装
       原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,所以出现了Hibernate把JDBC封装了一下,我们不用操作数据,直接操作它就行了。
 
二、我们再从分层的角度来看
       我们知道非常典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。
 
三、Hibernate是开源的一个ORM(对象关系映射)框架。
      ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。
 
Hibernate的核心:
 
从上图中,我们可以看出Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系。Hibernate的所有内容都在这了。那我们从上到下简单的认识一下,每个接口进行一句话总结。
1、Configuration接口:负责配置并启动Hibernate
2、SessionFactory接口:负责初始化Hibernate
3、Session接口:负责持久化对象的CRUD操作
4、Transaction接口:负责事务
5、Query接口和Criteria接口:负责执行各种数据库查询
 
注意:Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。
 
Hibernate的优/缺点:
 
优点:
1、更加对象化
      以对象化的思维操作数据库,我们只需要操作对象就可以了,开发更加对象化。
2、移植性
      因为Hibernate做了持久层的封装,你就不知道数据库,你写的所有的代码都具有可复用性。
3、Hibernate是一个没有侵入性的框架,没有侵入性的框架我们称为轻量级框架。Hibernate不需要继承任何类,不需要实现任何接口。这样的对象叫POJO对象。
4、Hibernate代码测试方便。
5、提高效率,提高生产力。
 
缺点:
1、使用数据库特性的语句,将很难调优
2、对大批量数据更新存在问题
3、系统中存在大量的攻击查询功能
 
 

最新文章

  1. NLPP-00-Preparation
  2. 手机端使用rem适配
  3. Hdu 1059 Dividing & Zoj 1149 & poj 1014 Dividing(多重背包)
  4. [Immutable + AngularJS] Use Immutable .List() for Angular array
  5. 使得fiddler来抓包查看微信浏览器的网页源码
  6. 第八十节,CSS3边框图片效果
  7. poj2502最短路!
  8. Web_0002:关于MongoDB的操作
  9. 机器学习---文本特征提取之词袋模型(Machine Learning Text Feature Extraction Bag of Words)
  10. Python网络爬虫之三种数据解析方式
  11. project5 大数据
  12. Javaweb学习笔记——(十一)——————JSP、会话跟踪、Cookie、HttpSession
  13. HttpClient 测试web API上传文件实例
  14. ios 数组打乱顺序
  15. 《算法》第四章部分程序 part 18
  16. SeekBar
  17. Java程序读取Properties文件
  18. ef SQL Server 版本不支持数据类型“datetime2”
  19. Linux中的环境变量PATH
  20. Tree CodeForces - 1111E (树,计数,换根)

热门文章

  1. 13.Xcode开发的快捷键
  2. MySQL中GROUP_CONCAT中排序
  3. iOS 利用webView加载html代码,在代理中获取html页面的链接时出现的问题
  4. SQL一致性错误修复SQL
  5. 使用KeepAlived搭建MySQL高可用环境
  6. [UE4][Custom Animation Graph Node]Evaluate Pose by Curve
  7. [XAF] How to improve the application's performance
  8. HDOJ 4749 Parade Show
  9. iOS 标题内容待定
  10. tomcat 8在win8.1中的配置