|
Hibernate理论基础
1. 什么是hibernate? 2. hibernate的知识内容 3. 什么是对象持久化?对象持久化有什么用?(解决的问题) 4. 如何对象持久化? 5. 如何用数据库的方法做对象持久化? 6. ORM(对象关系映射)是什么?有什么作用? 7. ORM从对象到表所要考虑的问题 8. 什么是ORM框架?有什么用? 9. 使用hibernate的方法做对象持久化的工作,程序员应该怎么做? 10. hibernate有什么用? 11. 程序员和hibernate的整体工作流程
什么是hibernate:
持久化的框架,属于设计方面的内容,类库,用来做对象持久化的,什么是对象持久化呢?
Hibernate的知识内容:
语法部分(类库)
程序设计思想,也就是持久层的设计
什么是对象持久化?对象持久化有什么用?(解决的问题):
发现问题:
程序设计的架构: 表现层—业务层—持久层—数据库层,其中表现层和业务层是JVM来执行,应用程序会产生许多的对象,如果断电了,对象就消失了,也就是说在内存中的对象是不稳定的,状态不能持久
发现问题:
将一个对象从A电脑复制到B电脑,如何做到呢?
那么有三种方法解决上面的问题: 1. 序列化: 通过网络传递,或者硬盘共享 2. 存储到数据库中,谁想用,从数据库中拿 3. EJB Entity Bean(实体Bean)
序列化的方法比较死板:如果当一个对象的结构比较复杂的时候,我们这时只需要一部分内容,没有办法,只能整个写入到文件,整个读取 序列化的缺点: 不能检索,不能分离一个对象,不方便共享 所以说第一种方法只能用于做临时的持久化,简单的传输,但不适合复杂的持久化工作
第二种方法(数据库持久化):检索方便,分布式共享,永久数据
总结: 什么是对象持久化: 对象持久化就是把内存中的对象永久的保存起来,保护对象的状态,方便使用 对象持久化有什么用: 1.解决掉电的问题 2.共享方便 3.保证对象安全检索方便
如何对象持久化: 1. 对象序列化 2. 数据库(JDBC,EJB,Hibernate)
如何用数据库的方法做对象持久化: 1. JDBC 发现问题: 需要做大量的工作,难度大 2. EJB 使用的是其中的一个功能来做持久化,解决了使用JDBC方法的的大量工作的问题 发现问题: EJB是重量级的组件,要使用它,有两个问题 1.成本 2.性能
发现问题: 以上两种方式还有个共同的问题,对象不是简单存储在数据库中的,比如多态的特点就不能处理 A b=new B(); B为A的子类
3. Hibernate 解决了以上的所有问题,作用:1.不用做大量的工作 2.移植性能好 3.提高了代码的质量,简单 4.检索共享重用成本调试
ORM(对象关系映射)是什么?有什么作用? 发现问题: Java中的对象的属性类型和数据库中的字段类型是不一样的,那么如何来存储java中的对象呢?这就需要做对象关系的映射,也就是ORM 什么是ORM: 将内存中的对象和数据库做转化,这样就实现了java与数据库之间的访问等功能
ORM从对象到表所要考虑的问题: Orm的复杂问题: 1. 数据库如何保证对象的唯一性:在内存中,两个对象属性值都一样,但是内存地址不一样,可以做区分,但是在数据库中如何分辨呢? 2. 继承关系如何转化 3. 集合如何映射呢?
什么是ORM框架?有什么用? 就是一个类库,通过这个类库完成持久化层的设计
使用hibernate的方法做对象持久化的工作,程序员应该怎么做? 1. 将ORM方案定下来,就是类到数据库的转化 2.利用hibernate生成代码 hibernate有什么用? 1. 完成jdbc的代码 2. 管理持久化对象的状态 3. 提供一个查询的API
程序员和hibernate的整体工作流程 程序员: 1. 设计ORM方案 2. 写配置文件 3. 调用Hibernate的API,向Hibernate发出命令 hibernate: 4. 读配置文件 5. 生成jdbc代码 6. 执行
Hibernate简单实例 Hibernate语法: 作用: 数据库的增删改查 HQL面向对象的查询语句
大致步骤: 1. 设置环境 类库 2. 定义映射 A 定义映射的实体po B 建立数据库表 C 写XML配置文件(表,数据库) 3. 调用Hibernate API A 管理po的状态(增删改,恢复po状态) B 检索(查询)
Hibernate第一个简单的实例: 引例(frisHbn包) 1. 设置环境 hibernate配置环境需要的资源 Hibernate的jar包: lib.zip dtd.zip: dtd.zip可以不设置 2. 定义映射 建立项目: bussiness包: entity包 Biz包业务 client包: 测试 util包: 工具
先写持久化类: 以花为实体,建立花类,并且建立数据库表 /** * 建表语句: * CREATE TABLE T_FRUIT(
上一篇:Hibernate中的Session什么时候关闭?
下一篇:struts+hibernate如何整合在一起?
|