1 hibernate:一个操作持久层的框架,ORMapping思想的框架
2.ORMapping 对象关系映射
类 对应 一张表
对象 对应 一行数据
属性 对应 表的列
id 对应 主键
3.hibernate的开发
1.搭建hibernate的环境
导入jar包
导入运行环境相关的配置文件 src/hibernate.cfg.xml【etc/xx】
1.于数据库连接的相关参数
connection.driver_class
connection.url
connection.username
connection.password
2.自身属性相关的参数
dialect:方言
show_sql
format_sql
3.注册映射文件
<mapping resource="xx/xxx/xxxx.hbm.xml"/>
导入映射文件
xxx.hbm.xml
<class name="类全路径" table="对应的表">
<!--配置主键信息-->
<id name="属性id" column="列名" type="类当中的类型">
<generator class="increment"/>
</id>
<!--非主键相关的信息-->
<property name="属性" column="列名" type="xxx"/>
</class>
位置随意
2.使用hibernate的core API 进行开发
1.通过Configuration读取配置文件获得SesssionFactory[重量级资源]
2.通过SessionFactory获得Session[用户操作的对象]
Session提供了一套CRUD方法,依赖于主键
session.save(Object)
查询 session.get(obj.class,pk)
修改和删除 先查询在修改/删除
3.要通过Session获得Transaction控制事务的对象
session.getTransaction()
tx.begin();
tx.commit();
4.如果有dao层,和Biz层 事务要再Biz层中控制
5.java当中对象不是孤立的,有关系
6.对象与对象的关系分为三大类
关联关系
继承关系
值对象关系
7.关联关系
1:1 人 Person 身份证 IdCard 1一个只有一个身份证号码
name number //编号
age Expire//有效期
IdCard Person
关系属性:IdCard不是Person的固有属性,只是为了表达与Person的关系
维护内存中的对象之间的关系
双向关系:从任意一个对象都能找到另外一个对象[双方都配置了关系属性]
单向关系:只有一方配置了关系属性
在表当中约定 t_Person 和 t_IdCard 的一对一关系:主外键关系
1:* 一对多关系
用户 User 订单 Order 一个用户可以有多个订单,一个订单只对应一个用户
name address
age price
关系属性: Set<Order> User
*:* 多对多关系
学生 Student 课程 Course 一个学生有多门课,一个课程有多个学生
name name
关系属性: Set<Course> Set<Student>
1:1关系在表当中处理的方式采用主外键约束
1.唯一外键:外键可以重复,在外键的基础上加上一个唯一性约束
t_person t_idcard
t_id p_id 外键+唯一性约束
1 1
2 2
2.共享主键
t_person t_idcard
t_id (主键) t_id 作为主键同时是外键
共享主键建表:特点关系密度高
配置映射文件
Hibernate在关联对象时重要的思想:传递性持久化
保存一方是另一方也保存,查询一方的时候另一方也被查询
在数据库对表进行删除获得插入式
插入数据:先插入父表,在插入子表
删除数据:先删除子表,在删除父表
cascade 级联:设定操作当前对象时如何操作与该对象关联的对象
none:默认值,保存,删除,更新对象时,忽略关联对象
save-update:通过save()或者update(),saveOrUpdate()保存或者更新当前对象时,同时更新
和保存级联对象
delete:通过delete()方法删除当前对象时,级联删除关联对象
all:save-update与delete的集合,如果对当前对象进行lock()或者evict()操作时,级联对 象进行相同的操作
delete-orphan:删除所有和当前对象解除关联关系的对象
all-delete-orphan:包含all和delete-orphan的行为
一对一:唯一外键:为外键加上唯一约束
公司 Company 地址 Address
关系属性 Address Coompany
作业: 学生 和 电脑
发表评论
-
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 730从经理找员工{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...
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学习笔记(软件+学习笔记) ...
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
Contiki学习笔记:进程、事件、etimer关系 Contiki 实例: Contiki学习笔记:创建两个交互进程 Contiki 主函数剖析: Contiki学习笔记:main函数剖析 Contiki学习笔记:启动一个进程process_start Contiki学习笔记...
java学习笔记java学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记...