Hibernate -annotation 学习笔记 ---wjt276 [2010-01-18完] 目录
第1课 课程内容 .............................................................................................. 6 第2课 Hibernate UML图 ...................................................................................... 6 第3课 风格 .................................................................................................. 7 第4课 资源 .................................................................................................. 7 第5课 环境准备 .............................................................................................. 7 第6课 第一个示例Hibernate HelloWorld ........................................................................ 7 第7课 建立Annotation版本的HellWorld ........................................................................ 9 第8课 什么是O/R Mapping ................................................................................... 11
一、 二、 三、 四、 五、 六、
定义: ........................................................................................ 11 Hibernate的创始人: ........................................................................... 11 Hibernate做什么: ............................................................................. 12 Hibernate存在的原因: ......................................................................... 12 Hibernate的优缺点: ........................................................................... 12 Hibernate使用范围: ........................................................................... 12
第9课 Hibernate的重点学习:Hibernate的对象关系映射 ........................................................ 12
一、对象---关系映射模式 ................................................................................ 12 二、常用的O/R映射框架: ............................................................................... 13 第10课 模拟Hibernate原理(OR模拟) .......................................................................... 13
一、 二、 一、 二、 三、 四、 五、 六、 七、 八、 九、 十、 十一、 十二、 十三、
项目名称 ...................................................................................... 13 原代码 ........................................................................................ 13 提纲 .......................................................................................... 15 介绍MYSQL的图形化客户端 ...................................................................... 16 Hibernate.cfg.xml:hbm2ddl.auto ............................................................... 16 搭建日志环境并配置显示DDL语句 ................................................................ 16 搭建Junit环境 ................................................................................ 16 ehibernate.cfg.xml : show_sql ................................................................. 16 hibernate.cfg.xml :format_sql ................................................................. 17 表名和类名不同,对表名进行配置 ................................................................ 17 字段名和属性相同 .............................................................................. 17 字段名和属性名不同 ............................................................................ 17 不需要(持久化)psersistence的字段 ........................................................... 18 映射日期与时间类型,指定时间精度 ............................................................ 18 映射枚举类型 ................................................................................ 19
第11课 Hibernate基础配置 .................................................................................. 15
第12课 使用hibernate工具类将对象模型生成关系模型 .......................................................... 19 第13课 ID主键生成策略 ..................................................................................... 20
一、 二、
Xml方式 ...................................................................................... 20 annotateon方式 ............................................................................... 21
联合主键 ...................................................................................... 24 1、xml方式 ........................................................................................ 24 2、annotation方式 ................................................................................. 27
第14课 Hibernate核心开发接口(重点) ......................................................................... 29
一、
Configuration(AnnotationConfiguration) ........................................................ 29
Hibernate—annotation 学习笔记 第3页 共109页
二、 三、
1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 一、 二、 三、 四、 五、 一、
SessionFactory ................................................................................ 29 Session ....................................................................................... 29 管理一个数据库的任务单元 .................................................................... 29 save(); ..................................................................................... 29 delete() .................................................................................... 29 load() ...................................................................................... 29 Get() ....................................................................................... 30 load()与get()区别 .......................................................................... 31 update() .................................................................................... 31 saveOrUpdate() .............................................................................. 32 clear() ..................................................................................... 32 flush() .................................................................................. 33 evict() .................................................................................. 33
第15课 持久化对象的三种状态 ................................................................................ 35
瞬时对象(Transient Object): .................................................................. 35 持久化对象(Persistent Object): ............................................................... 35 离线对象(Detached Object): ................................................................... 35 三种状态的区分: .............................................................................. 35 总结: ........................................................................................ 35 一对一 关联映射 ............................................................................... 36
唯一外键关联-单向(unilateralism) .......................................................... 37 唯一外键关联-双向 ........................................................................ 40 主键关联-单向(不重要) .................................................................... 41 主键关联-双向(不重要) .................................................................... 44 联合主键关联(Annotation方式) ............................................................. 44 Component关联映射: ...................................................................... 45 User实体类: ............................................................................. 45 Contact值对象: .......................................................................... 46 xml--User映射文件(组件映射): ............................................................ 46 annotateon注解 ........................................................................... 46 导出数据库输出SQL语句:.................................................................. 47 数据表结构: ............................................................................. 47 组件映射数据保存: ....................................................................... 47 对象模型图: ............................................................................. 48 关系模型: ............................................................................... 48 关联映射的本质: ......................................................................... 48 实体类 ................................................................................... 48 xml方式:映射文件: ...................................................................... 49 annotation ............................................................................... 50 多对一 存储(先存储group(对象持久化状态后,再保存user)): ................................. 50 重要属性-cascade(级联):.................................................................. 51 多对一 加载数据 ......................................................................... 51 对象模型: ............................................................................... 52 关系模型: ............................................................................... 52 多对一、一对多的区别: ................................................................... 52 实体类 ................................................................................... 52 xml方式:映射 ............................................................................ 52
第16课 关系映射(重点) ...................................................................................... 36
(一) (二) (三) (四) (五) 二、
(一) (二) (三) (四) (五) (六) (七) (八) 三、
(一) (二) (三) (四) (五) (六) (七) (八) (九) 四、
(一) (二) (三) (四) (五)
component(组件)关联映射 ..................................................................... 45
多对一 – 单向 ................................................................................ 48
一对多 - 单向 ................................................................................. 51
Hibernate—annotation 学习笔记 第4页 共109页
(六) (七) (八) (九) (十) (十一) (十二) 五、
(一) (二) (三) (四) (五) (六) 六、
(一) (二) (三) (四) (五) (六) (七) (八) (九) (十) 七、
(一) (二) 八、 九、 十、
annotateon注解 ........................................................................... 53 导出至数据库(hbm?ddl)生成的SQL语句: .................................................... 53 一对多 单向存储实例: .................................................................... 53 生成的SQL语句: ......................................................................... 54 一对多,在一的一端维护关系的缺点: ........................................................ 54 一对多 单向数据加载: .................................................................... 54 加载生成SQL语句: ....................................................................... 54 xml方式:映射 ............................................................................ 55 annotateon方式注解 ....................................................................... 55 数据保存: ............................................................................... 56 关于inverse属性: ....................................................................... 56 Inverse和cascade区别: .................................................................. 56 一对多双向关联映射总结:.................................................................. 57 实例场景: ............................................................................... 57 对象模型: ............................................................................... 57 关系模型: ............................................................................... 57 实体类 ................................................................................... 57 xml方式:映射 ............................................................................ 58 annotation注解方式 ....................................................................... 58 生成SQL语句 ............................................................................. 59 数据库表及结构: ......................................................................... 59 多对多关联映射 单向数据存储: ............................................................. 59 多对多关联映射 单向数据加载: ............................................................. 61 xml方式:映射 ............................................................................ 61 annotation注解方式 ....................................................................... 62
一对多 - 双向 ................................................................................. 54
多对多 - 单向 ................................................................................. 57
多对多 - 双向 ................................................................................. 61
关联关系中的CRUD_Cascade_Fetch ................................................................ 63 集合映射 ...................................................................................... 63 继承关联映射 .................................................................................. 64
继承关联映射的分类: ..................................................................... 64 对象模型: ............................................................................... 64 单表继承SINGLE_TABLE: ................................................................... 64 具体表继承JOINED: ....................................................................... 70 类表继承TABLE_PER_CLASS .................................................................. 72 三种继承关联映射的区别:.................................................................. 74
(一) (二) (三) (四) (五) (六) 一、 二、 三、 四、 五、 一、 二、 三、 一、 二、 三、
第17课 hibernate树形结构(重点)............................................................................. 75
节点实体类: .................................................................................. 75 xml方式:映射文件: ........................................................................... 75 annotation注解 ............................................................................... 76 测试代码: .................................................................................... 76 相应的类代码: ................................................................................ 76 设计 .......................................................................................... 79 代码: ........................................................................................ 79 注意 .......................................................................................... 80 Hibernate可以使用的查询语言 ................................................................... 80 实例一 ........................................................................................ 80 实体一测试代码: .............................................................................. 82
第18课 作业-学生、课程、分数的映射关系 ..................................................................... 79
第19课 Hibernate查询(Query Language) ....................................................................... 80
Hibernate—annotation 学习笔记 第5页 共109页
四、 五、 一、 二、 三、 四、 五、 六、 七、 一、 一、 二、 三、
实例二 ........................................................................................ 86 实例二测试代码 ................................................................................ 87 实体代码: .................................................................................... 89 Restrictions用法.............................................................................. 90 工具类Order提供设置排序方式 .................................................................. 91 工具类Projections提供对查询结果进行统计与分组操作 ............................................ 91 QBC分页查询 .................................................................................. 92 QBC复合查询 .................................................................................. 92 QBC离线查询 .................................................................................. 92 实例代码 ...................................................................................... 92 query.iterate查询数据 ......................................................................... 93 query.list()和query.iterate()的区别 ........................................................... 94 两次query.list().............................................................................. 94
第20课 Query by Criteria(QBC) .............................................................................. 89
第21课 Query By Example(QBE) ............................................................................... 92 第22课 Query.list与query.iterate(不太重要) ................................................................ 93
第23课 性能优化策略 ........................................................................................ 95 第24课 hibernate缓存 ...................................................................................... 95
一、 二、
1、 2、 3、 4、 5、 6、 7、 8、 三、 四、 一、
1、 2、 二、 三、 一、
1、 2、 3、 4、 5、 二、
Session级缓存(一级缓存) ....................................................................... 95 二级缓存 ...................................................................................... 95 二级缓存的配置和使用: ...................................................................... 96 二级缓存的开启: ............................................................................ 96 指定二级缓存产品提供商: .................................................................... 96 使用二级缓存 ................................................................................ 97 应用范围 .................................................................................... 99 二级缓存的管理: ............................................................................ 99 二级缓存的交互 ............................................................................. 100 总结 ....................................................................................... 102 查询缓存 ..................................................................................... 102 缓存算法 ..................................................................................... 103 数据库的隔离级别:并发性作用。 ............................................................... 104 Mysql查看数据库隔离级别: ................................................................. 104 Mysql数据库修改隔离级别: ................................................................. 104 事务概念(ACID) ............................................................................... 104 事务并发时可能出现问题 ....................................................................... 104 悲观锁 ....................................................................................... 105 悲观锁的实现 ............................................................................... 105 悲观锁的适用场景: ......................................................................... 105 实例: ..................................................................................... 105 悲观锁的使用 ............................................................................... 106 执行输出SQL语句: ......................................................................... 106 乐观锁 ....................................................................................... 107
第25课 事务并发处理 ....................................................................................... 104
第26课 hibernate悲观锁、乐观锁 ............................................................................ 105