Hibernate [冬眠]
作用:JDBC在访问数据库的时候会产生很多的冗余代码,影响程序员的开发效率。为了简 化访问数据库的操作
对于程序而言最重要的是? 数据
数据有怎么样的表现形式?
1.内存[临时数据 transient]
Java 中的Object 是一种临时数据
2.数据库
表【table】的形式 持久化数据
在java开发|web开发 就是 由 Object<---->table
有Object 到 table 或者由 table 到 Object
ORMapping Object Relationship(关系,泛指数据库) Mapping
1. java类 表
User t_user 一个类对应一张表
Object row 表当中的每一行数据代表一个对象
Property column 表当中的每一个列对应对象中的属性
id 主键 判断对象和数据库中的关系是唯一的,id不是对象的固有属性
仅仅只是一个对应关系
配置文件:映射文件【方便维护】
ORMapping框架
Hibernate 通用的CRUD(增删改查)方法
toplink
Hibernate : www.hibernate.org
1.hibernate目录结构
eg 一个hibernate的拍卖行的案例
etc hibernate的配置文件
grammar HQL的语法
Hibernater的开发
1.搭建hibernate的环境建立一个java工程
1.导入jar包
hibernate3.jar
lib *
ojdbc4.jar [数据库驱动jar包]
2.导入配置文件
1.导入与运行环境相关的配置文件
hibernate.cfg.xml--->etc目录中
位置在src目录下
1.配置与数据库连接相关的配置参数
2.与自身属性相关的配置
3.对于映射文件的注册
3.提供映射关系的配置文件
1.配置文件的名称 xxx.hbm.xml
2.配置文件的位置 任意
导入DTD 约束
在hibernate3.jar-->org.hibernate-->hibernate-mapping-3.0.dtd
Hibernate 核心API
1.Configuration 配置 作用读取配置文件 获得SessionFactory
2.SessionFactory -->创建Session,重量级资源
3.Session-->负责java程序与数据库的交互,提供一套CRUD的方法[轻量级]
Session如何与数据库进行连接:Session内部封转了Connection对象
|-Transaction 专门处理事务 所有的hibernate的程序必须控制事务
|-Query 复杂的查询(非主键的查询)
Hibernate的开发 ORMapping的开发 O R M
1 O Object 提供对象
注意:对象的主键类使用封转类 id integer
2 R 数据库 建表
3 M 映射文件的配置
4 在hibernage.cfg.xml中为映射文件进行注册
5 采用Hibernate的核心API进行编程处理
org.hibernate.MappingException: Unknown entity: zx.hb.day1.pojo.User
说明映射文件没有注册
Session.save(Obect);//插入数据
increment主键生成器的原理
select max(t_id) from g_user
从操作的表当中查询出最大的主键值,然后将该值+1作为新的主键值
Session.get(class,pk);//通过session查询数据依赖于主键
删除
先查询在删除:
1.确保该对象的存在
2.获得该对象的主键值
Object ojb=session.get(Object.class,pk);
Session.delete(Object);
修改
先查询再修改
1.确保对象的存在
2.获得该对象的主键值
Object obj=(Object)session.get(Object.class,pk);
obj.setXXX(xxxx);//在内存中对数据进行修改
session.update(obj);
创建工具类,封装Session
1.SessionFactory 工厂类
1).创建Session
2).进行二级缓存
SessionFactory是重量级资源特点:功能非常强大,占用的内存就多
由于重量级资源占用内存,不能频繁的创建,只创建一个,就会引发线程安全问题,
重量级资源一般来讲是线程安全.运行多线程访问。
2.Session 代表了用户的操作
1.提供了一套CRUD的方法 save(Object); update(Object); delete(Object);
get(calss,pk);
2.内部封了Connection
Session:轻量级资源(每一个用户独享,消耗内存很少)
模拟一个注册
ReigstAction-->UserBiz -->UserDao
register(User u ) save(User u);
应该在同一个Session当中,在同一个线程中完成注册
对于事务的控制在Biz层进行处理
应为biz可能会处理多个Dao层的数据,事务的原子特性【要么成功要么失败】,事务的处理必须在Biz层处理
事务的特性:原子性,持久性,一致性,隔离性
Object ----> Thread对象
ThreadLocal 工具类:将一个对象存入到线程的Map当中
key: 当前ThreadLocal对象
value:存入的值/对象
发表评论
-
Hibernateday06 QBC(Query by Criteria)
2012-07-24 16:59 866QBC (Query by Criteria)由hiberna ... -
Hibernateday06 SQLQuery 和NameQuery
2012-07-24 16:58 1252SqlQuery:在hibernate中使用sql Q ... -
Hibernateday06 HQL(Hibernate Query Language)
2012-07-21 22:18 1209HQL(hibernate query language) ... -
Hibernateday06学习笔记
2012-07-21 21:58 978HQL(hibernate query language) ... -
Hibernateday05继承关系union-subclass映射策略
2012-07-21 21:43 1017union-subclass映射策略 特点:父表 ... -
Hibernateday05继承关系joined-subclass映射策略
2012-07-21 00:07 8372.joined-subclass映射策略 特点:父 ... -
Hibernateday05继承关系subclass映射策略
2012-07-21 00:00 7632.继承关系 O Product //产品 ... -
Hibernateday05由一个主键类,将对象当中的联合作为主键的属性描述成一个对象【主键类的复合主键】
2012-07-20 23:53 8812.由一个主键类,将对象当中的联合作为主键的属性描述成一个对象 ... -
Hibernateday05对象当中的几个属性组合作为表的主键【实体类属性的复合主键】
2012-07-20 23:47 871复合主键 注意:1.对象必须实现序列化接口 1. ... -
Hibernateday05主键生成器(hilo)
2012-07-20 23:36 961主键生成器 generator class="xxx ... -
Hibernateday05学习笔记
2012-07-20 23:24 8111.一对多自身相关 员工找经理 关系属性 Emp ... -
Hibernateday04多对多关系
2012-07-19 23:19 716多对多 O Student C ... -
Hibernateday04一对多的自身相关(双向关系)
2012-07-19 01:04 735自身相关的双向关系 class Emp{ Inte ... -
Hibernateday04一对多的自身相关(从经理找员工)
2012-07-19 00:21 729从经理找员工{1:*} class Emp{ Integ ... -
Hibernateday04一对多的自身相关(从员工找经理)
2012-07-18 23:45 790对多的自身相关 以Emp表为例:一个雇员会有多个下属, ... -
Hibernateday04学习笔记
2012-07-18 23:19 662一对多 O Dept ... -
Hibernateday03一对多双向操作
2012-07-17 23:44 6721.建表 create table g_dept( ... -
Hibernateday03一对多单向操作
2012-07-17 22:37 763一对多 1:* Employee ... -
Hibernateday03学习笔记
2012-07-17 22:25 6001.Hibernate关联关系 一对一的关联关系 1 ... -
Hibernateday02表的唯一外键
2012-07-24 16:57 863一对一:唯一外键:为外键加上唯一约束 公司 Com ...
相关推荐
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...
希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf希沃白板学习笔记.pdf
2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip2022吴恩达机器学习笔记汇总(共10章节).zip...
本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记Day01》的相关代码文件本人博客文章《mybatis框架-学习笔记...
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能学习笔记人工智能学习笔记,人工智能学习笔记,人工智能...
CCNA学习笔记 CCNA学习笔记 CCNA学习笔记
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) ...
NRF24L01学习笔记,可以参考看看哦
docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,...
PHP个人学习笔记
ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1