Hibernate4.3基础知识2
一、数据库的隔离级别
脏读 | 不可重复读 | 幻读 | |
Read uncommited | Y | Y | Y |
Read commited | N | Y | Y |
Repeatable read | N | N | Y |
Serializable | N | N | N |
查询MySql隔离级别:select @@gloable.tx_isolation,@@tx_isolation
二、Session的flush
1、使用UUID主键生成策略测试flush
1 User user = new User(); 2 user.setUname("张三"); 3 user.setGender(1); 4 user.setBirthday(new Date()); 5 //因为是uuid方式生成的主键,由Session给生成,把user对象存储在Session的临时存储区 6 session.save(user); 7 //发出sql语句,清理临时存储区,把dirty变成false 8 session.flush(); 9 tx.commit();
2、使用native主键生成策略测试flush
1 //因为是使用native方式生成主键,所以save的时候要发出sql来产生主键,持久区有数据,dirty是true 2 session.save(user); 3 //把dirty变成false 4 session.flush();
//因为是使用native方式生成主键,所以save的时候要发出sql来产生主键,持久区有数据,dirty是true session.save(user); //把user逐出Session session.evict(user); //Session中没有数据flush没有意义 session.flush(); //但是commit依然会把数据提交到数据库,因为sql已经发出了 tx.commit();
3、session的flush能完成大量数据入库的功能
1 for(int i = 0; i < 100009; i++){ 2 User user = new User(); 3 user.setUname("张三"); 4 user.setGender(1); 5 user.setBirthday(new Date()); 6 session.save(user); 7 if(i%100 == 0){ 8 session.flush(); 9 } 10 } 11 session.flush(); 12 tx.commit();
三、多对一:
1、创建模型: 多的一端引入一的一端作为类的成员变量,
2、配置映射文件:
1 <!-- 多对一关系映射 cascade: delete save-update all --> 2 <many-to-one name="team" column="t_No" cascade="save-update"></many-to-one>
cascade级联,在保存多的一端的时候,会自动级联保存一的一端
四、一对一单向关联:
1、创建模型:
1 public class IDCard { //主键 2 private Integer cardId; 3 private String cardNo; //指定一对一的关系 4 private Emp emp; 5 }
2、配置映射文件
1 <class name="IDCard" table="t_id_card"> 2 <id name="cardId" column="emp_No"> 3 <!-- 使用外键方式生成主键 --> 4 <generator class="foreign"> 5 <param name="property">emp</param> 6 </generator> 7 </id> 8 <property name="cardNo" column="card_no"></property> 9 <!-- 指定一对一关系 constrained:建表时带有外键约束 --> 10 <one-to-one name="emp" constrained="true"></one-to-one> 11 </class>
五、一对一双向关联:
1、创建模型: 在双放都引入对应的一对一关系
2、配置映射文件
1 <one-to-one name="card"></one-to-one>
六、一对多单向:
1、创建模型:在一的一方,通过集合引入多的一方
2、配置映射文件:
一对多是有缺陷的,保存的时候如果多的一端的外键是非空,一对多的保存就不成立
<set name="set"><!-- key:在多的一端的表中要产生的外键 column:外键名称 --><key column="t_id"></key><!-- one-to-many:指定多的一端的类 class:多的一端的类 --><one-to-many class="Emp"/> </set>
七、一对多双向:
1、创建模型:在多的一方,再添加一的一端的引入
2、配置映射文件:
1 <!-- 2 指定多对一的关系: 3 name:一的一端属性名 4 column:多的一端的表中要产生的外键字段,注意在team.hbm.xml中已经配置了这个外键, 5 现在要求我们配置的这个外键要和team.hbm.xml中配置的多的一端外键名称相同, 6 因为这两个配置指的是同一个列 7 --> 8 <many-to-one name="team" column="t_id"></many-to-one>
八、多对多单向:
1、创建模型:在多的一方,以集合形式引入另一个多的一方
2、配置映射文件:
1 <!-- 配置set,设置多对多的单端集合 table:要产生的中间表 --> 2 <set name="roles" table="emp_role" cascade="save-update"> 3 <!-- 把当前表的主键给中间表作为外键 column:当前主键名称 --> 4 <key column="emp_No"></key> 5 <many-to-many class="Role" column="role_id"></many-to-many> 6 </set>
九、多对多双向:
1、创建模型:双发都引入对方
2、配置映射文件“
十、延迟加载:
1、class上的延迟加载: get默认不使用延迟加载,load使用延迟加载,延迟加载必须在同一个session范围内
2、集合的延迟加载:默认是有延迟加载的, 集合的加载效果不受类上延迟加载影响
如果查询集合数量时候,需要用lazy="extra" 提高效率
3、单端延迟加载
针对多对一 和 一对一 的延迟加载,默认是lazy=proxy来使用延迟加载
转载于:https://www.cnblogs.com/cat-fish6/p/8670751.html
Hibernate4.3基础知识2相关推荐
- 嵌入式Linux的OTA更新,基础知识和实现
嵌入式Linux的OTA更新,基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一旦嵌入式Li ...
- 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记
计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...
- 嵌入式linux编程,嵌入式Linux学习笔记 - 嵌入式Linux基础知识和开发环境的构建_Linux编程_Linux公社-Linux系统门户网站...
注:所有内容基于友善之臂Mini2440开发板 一.嵌入式Linux开发环境的构建 嵌入式开发一般分为三个步骤: 1.编译bootloader,烧到开发板 2.编译嵌入式Linux内核,烧到开发板 3 ...
- 《计算机网络应用基础》模拟试卷(六),《计算机与网络应用基础知识1》模拟试卷...
<计算机与网络应用基础知识1>模拟试卷 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机与网络应用基础知识1& ...
- python向量计算库教程_NumPy库入门教程:基础知识总结
原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...
- python常用变量名_python基础知识整理
Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...
- 计算机基础知识掌握欠缺,《计算机基础知识》实验教学改革探讨.pdf
<计算机基础知识>实验教学改革探讨.pdf Science& TechnologyVision 科 技 视 界 科技 探·索·争鸣 计<算机基础知识>实验教学改革探讨 ...
- python计算wav的语谱图_Python实现电脑录音(含音频基础知识讲解)
前言 今天开始进入近期系列文章的第一篇,如何用 Python 来实现录音功能. 在开始"造轮子"之前,个人一直强调一个观点,如果有些东西已经有了,不妨直接去 github 上搜,用 ...
- 计算机wrod初级考试题及答案,计算机基础知识+Word基础知识+Excel基础知识试题答案解析.doc...
文档介绍: 计算机基础知识+ Word基础知识+ Excel基础知识 第一部分 一.单项选择题 1.世界上第一台电子数字计算机取名为( ). A.UNIVAC B.EDSAC C.E ...
最新文章
- run loop 测试
- 正则表达式的顺序优先级
- C++学习之路 | PTA乙级—— 1052 卖个萌 (20 分)(精简)
- 基于DDD的golang实现
- Bootstrap采样方法的python实现
- VIVO X5M手机ROOT权限获取方法
- html5自动换行,html5文字自动换行怎么设置
- 2021前端开发面试题:面试中该如何与HR谈薪资?
- html中banner怎么写,banner图欣赏
- 程序员的自我进化:技术的广度与深度怎么权衡
- Python爬虫实例,一小时上手爬取淘宝评论(附代码)!
- GraphQL的认识与使用
- 苹果闪存性能测试软件,iPhone 12 Pro性能测试,再次秒杀所有!
- Directory Opus Pro v12.29.8272 文件管理资源管理器工具专业版
- 欧姆龙PLC项目程序NJ系列模切机程序
- MyBatis笔记(尚硅谷完整笔记)
- 汇川plc可以用C语言吗,汇川PLC技术能应用在工业自动化领域吗?
- c语言的cgi编译全过程
- 软件测试linux考试题,linux基础面试题
- MATLAB运行simulink模型显示找不到库Failed to load library ‘lib_Cmtrl_SetPoint_TMATS‘reference by ‘ ‘
热门文章
- CSS Sprites原理
- java模拟摇摆小球程序代码_Android实现左右摆动的球体动画效果
- 7-42 行编辑器 (10 分)
- django使用iframe
- C语言-数据结构-可变长顺序表的查找操作
- 基于matlab的绘图设计,matlab课程设计---利用MATLAB仿真软件进行绘图
- .net里鼠标选中的text数据怎么获取_数据快速对比,这个快捷键你都不会,难怪要加班...
- Java中的IO流(六)
- [TJOI2009] 战争游戏
- [CodePlus 2017 11月赛]晨跑 题解(辗转相除法求GCD)