目录
Hibernate基本介绍及下载?Hibernate优缺点?
Hibernate框架简介
Hibernate由Gavin King于2001年创建的框架,它强大且高效的构建具有关系对象持久性和查询服务的Java应用程序,是一个开放源代码的ORM(对象关系映射)框架,对JDBC进行了非常轻量级的对象封装,将Java类映射到数据库表中,从Java数据类型中映射到SQL数据类型中,并把开发人员从95%的公共数据持续性编程工作中解放出来,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库,Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,Hiberante是传统Java对象和数据库服务器之间的桥梁,用来处理基于O/R映射机制和模式的那些对象。就是把数据进行持久化
1.Hibernate框架
数据持久化工具,也是一个开放源代码的ORM解决方案。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供面向对象的数据访问API
2.Hibernate是ORM解决方案
基于ORM、Hibernate在对象模型和关系数据库的表之间建立了一座桥梁,通过Hibernate,程序员就不需要再使用SQL语句操作数据库中的表,使用API直接操作JavaBean对象就可以实现数据库的存储、查询、更改和删除等操作,显著降低了由于对象与关系数据库在数据表现方面的范例不匹配导致的开发成本
使用Hibernate完成持久化操作,只需要编写如下代码:
Session session = Hibernate.currentSession();
Query query = session.createQuery(“from user”);
List<User> users = (List<User>)query.list();
Hibernate是一个自定义工具类,用于获取Hibernate的Session对象,Session是Hibernate执行持久化的核心API
数据持久化
持久化(Persistence),即把数据(如内存中的对象)保存到持久化设备,即可(理论上)永久保存的存储设备中(如磁盘)持久化的主要应用是将内存中的数据存储到关系型的数据库中,当然也可以存储在磁盘文件中、 XML 数据文件中等
为什么需要持久化?
1.内存不能持久
2.内存容量有限(内存是用于存放计算数据的)
3.业务数据共享的需要(需要公共的持久设备)
4.为了使用大规模的检索,所以要将数据改为适合大规模检索的格式
5.数据管理的需要(安全、备份)
实现持久化
1.对象序列化
即实现了Serializable接口的类,适合于少量的对象进行暂时的持久化,适合于在网络上传输对象,但不符合企业级应用的需要,因为企业应用中对数据的要求是大量的,,长时间保存的、需要进行大规模查
2.JDBC
优点:功能完备,从理论上说效率是最高的,可以存储海量的数据并且适合进行大规模检索
缺点:开发效率和维护效率低,开发难度大,代码量大,占到到总代码量的1/3,或 1/2
3.ORM
简单层次理解:ORM:Object Relational Mapping(对象关系映射),指的是将一个Java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可以操作数据库中的表
困难层次理解:它是一种解决问题的思路(一种思想),实质就是将关系数据库中的业务数据用对象的形式表示出来,并通过面向对象的方式将这些对象组织起来,以实现系统业务逻辑;或者说,ORM就是内存中的对象与数据库中的数据间的映射关系
ORM的特点:开源,实现了JDBC的封装,实现了简单的API,轻量级解决方案,持久化对象是一个POJO类,最有名的ORM框架就是Hibernate
4.JPA 框架(标准ORM接口)
JPA(Java Persistence API),是JavaEE 5的标准ORM接口;它是一种规范、一套接口。但不是实现,用于实现这一规范的ORM很多,其中Hibernate就是之一
Hibernate优缺点
1.优点
(1)功能强大。是Java应用于关系数据库之间的桥梁
(2)支持许多面向对象的特性。如组合、继承、多态等
(3)可移植性好。对于更换数据库,通常只需更改Hibernate配置文件
(4)开源免费。开源研究源代码,改写源代码
2.缺点
(1)不适合以数据为中心大量使用存储过程的应用
(2)大规模的批量插入、修改和删除不适合用Hibernate
Jar包引入(required下所有)
lib: Hibernate开发包下
required: Hibernate开发的必须的依赖包
optional: Hibernate开发的可选的jar包
Hibernate所需的jar文件说明
文件 | 描述 |
---|---|
antlr- | 语法分析器 |
commons-collection | 各种集合类和集合工具类的封装 |
dom4j | XML的读写 |
javassist | 分析、编辑和创建Java字符码的类库 |
jta | Java事务API |
slf4j-api | 日志输出 |
hibernate-jpa-api-Final | 提供对JPA(Java持久化API)规范的支持 |
Hibernate下文件说明
documentation:Hibernate开发的文档
lib: Hibernate开发包
required: Hibernate开发的必须的依赖包
optional: Hibernate开发的可选的jar包
project: Hibernate提供的项目