一、数据库的隔离级别

  脏读 不可重复读 幻读
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相关推荐

  1. 嵌入式Linux的OTA更新,基础知识和实现

    嵌入式Linux的OTA更新,基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一旦嵌入式Li ...

  2. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  3. 嵌入式linux编程,嵌入式Linux学习笔记 - 嵌入式Linux基础知识和开发环境的构建_Linux编程_Linux公社-Linux系统门户网站...

    注:所有内容基于友善之臂Mini2440开发板 一.嵌入式Linux开发环境的构建 嵌入式开发一般分为三个步骤: 1.编译bootloader,烧到开发板 2.编译嵌入式Linux内核,烧到开发板 3 ...

  4. 《计算机网络应用基础》模拟试卷(六),《计算机与网络应用基础知识1》模拟试卷...

    <计算机与网络应用基础知识1>模拟试卷 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机与网络应用基础知识1& ...

  5. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  6. python常用变量名_python基础知识整理

    Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...

  7. 计算机基础知识掌握欠缺,《计算机基础知识》实验教学改革探讨.pdf

    <计算机基础知识>实验教学改革探讨.pdf Science& TechnologyVision 科 技 视 界 科技 探·索·争鸣 计<算机基础知识>实验教学改革探讨 ...

  8. python计算wav的语谱图_Python实现电脑录音(含音频基础知识讲解)

    前言 今天开始进入近期系列文章的第一篇,如何用 Python 来实现录音功能. 在开始"造轮子"之前,个人一直强调一个观点,如果有些东西已经有了,不妨直接去 github 上搜,用 ...

  9. 计算机wrod初级考试题及答案,计算机基础知识+Word基础知识+Excel基础知识试题答案解析.doc...

    文档介绍: 计算机基础知识+ Word基础知识+ Excel基础知识 第一部分 一.单项选择题 1.世界上第一台电子数字计算机取名为(    ). A.UNIVAC    B.EDSAC    C.E ...

最新文章

  1. run loop 测试
  2. 正则表达式的顺序优先级
  3. C++学习之路 | PTA乙级—— 1052 卖个萌 (20 分)(精简)
  4. 基于DDD的golang实现
  5. Bootstrap采样方法的python实现
  6. VIVO X5M手机ROOT权限获取方法
  7. html5自动换行,html5文字自动换行怎么设置
  8. 2021前端开发面试题:面试中该如何与HR谈薪资?
  9. html中banner怎么写,banner图欣赏
  10. 程序员的自我进化:技术的广度与深度怎么权衡
  11. Python爬虫实例,一小时上手爬取淘宝评论(附代码)!
  12. GraphQL的认识与使用
  13. 苹果闪存性能测试软件,iPhone 12 Pro性能测试,再次秒杀所有!
  14. Directory Opus Pro v12.29.8272 文件管理资源管理器工具专业版
  15. 欧姆龙PLC项目程序NJ系列模切机程序
  16. MyBatis笔记(尚硅谷完整笔记)
  17. 汇川plc可以用C语言吗,汇川PLC技术能应用在工业自动化领域吗?
  18. c语言的cgi编译全过程
  19. 软件测试linux考试题,linux基础面试题
  20. MATLAB运行simulink模型显示找不到库Failed to load library ‘lib_Cmtrl_SetPoint_TMATS‘reference by ‘ ‘

热门文章

  1. CSS Sprites原理
  2. java模拟摇摆小球程序代码_Android实现左右摆动的球体动画效果
  3. 7-42 行编辑器 (10 分)
  4. django使用iframe
  5. C语言-数据结构-可变长顺序表的查找操作
  6. 基于matlab的绘图设计,matlab课程设计---利用MATLAB仿真软件进行绘图
  7. .net里鼠标选中的text数据怎么获取_数据快速对比,这个快捷键你都不会,难怪要加班...
  8. Java中的IO流(六)
  9. [TJOI2009] 战争游戏
  10. [CodePlus 2017 11月赛]晨跑 题解(辗转相除法求GCD)