Hibernate-实体-对象状态-一级缓存-事务-查询
一 hibernate中的实体规则
1.1 实体类创建的注意事项
- 持久化类提供无参数构造 --在调用instance()方法时默认调用空参构造
- 成员变量私有,提供共有get/set方法访问.需提供属性 ---Private String name 不叫属性 叫成员变量 --Get和set方法才叫属性
- 持久化类中的属性,应尽量使用包装类型
- 持久化类需要提供oid.与数据库中的主键列对应 --没有主键是无法到hibernate里面的
- 不要用final修饰class hibernate使用cglib代理生成代理对象.代理对象是继承被代理对象.如果被final修饰.将无法生成代理.
1.2 主键类型
自然主键(少见)
表的业务列中,有某业务列符合,必须有,并且不重复的特征时,该列可以作为主键使用.
代理主键(常见)
表的业务列中,没有某业务列符合,必须有,并且不重复的特征时,创建一个没有业务意义的列作为主键
1.3 主键生成策略
代理主键
identity : 主键自增.由数据库来维护主键值.录入时不需要指定主键.
自然主键
assigned:自然主键生成策略. hibernate不会管理主键值.由开发人员自己录入.
increment 有线程安全问题,只在测试下用,在开发中不用

二 hibernate中的对象状态
2.1 对象分为三种状态
瞬时状态
没有id,没有在session缓存中
持久化状态
有id,在session缓存中
游离|托管状态
有id,没有在session缓存中
2.2 三种状态的转换图

三 hibernate进阶-一级缓存
缓存:提高效率.hibernate中的一级缓存也是为了提高操作数据库的效率.
提高效率手段1:提高查询效率

提高效率手段2:减少不必要的修改语句发送

四 hibernate中的事务
4.1 事务
事务特性
a 原子性
c 一致性
i 隔离性
d 持久性
事务并发问题
1.脏读
2.不可重复度
3.幻|虚读
事务的隔离级别
读未提交- 123
读已提交 - 23
可重复读(mysql默认级别)-3
串行化 - 没有问题
4.2 hibernate隔离级别
知识点:如何在hibernate中指定数据库的隔离级别
在主配置文件中可以设置

4.3 管理事务
知识点2:在项目中如何管理事务
业务开始之前打开事务,业务执行之后提交事务. 执行过程中出现异常.回滚事务.
在dao层操作数据库需要用到session对象.在service控制事务也是使用session对象完成. 我们要确保dao层和service层使用的使用同一个session对象
在hibernate中,确保使用同一个session的问题,hibernate已经帮我们解决了. 我们开发人员只需要调用sf.getCurrentSession()方法即可获得与当前线程绑定的session对象
注意1: 调用getCurrentSession方法必须配合主配置中的一段配置

注意2:通过getCurrentSession方法获得的session对象.当事务提交时,session会自动关闭.不要手动调用close关闭.
crm项目中
事务一般在sevice中处理.需要保证同一个session.这时要要在线程中取session
service层

Dao

五 hibernate中的批量查询
5.1 HQL查询
hibernate Query Language(多表查询,但不复杂时使用)
Hibernate独家查询语言,属于面向对象的查询语言
基本查询


条件查询
?号占位符

命名占位符

分页查询

5.2 Criteria查询
(单表条件查询)
Hibernate自创的无语句面向对象查询
基本查询

条件查询


分页查询

设置查询总记录数

5.3 原生SQL查询
(复杂的业务查询)
基本查询
返回数组List

返回对象List

条件查询

分页查询

源码
链接:https://pan.baidu.com/s/1GrAsjbFhyW4mENDqxI43hA 密码:qn9j
Hibernate-实体-对象状态-一级缓存-事务-查询的更多相关文章
- Hibernate 持久化对象和一级缓存
关于如何手动创建Hibernate,Hibernate初了解已经介绍了,接下来了解持久化对象和一级缓存. Hibernate的持久化类有三种状态: 1.Transient瞬时态:持久化对象没有唯一标识 ...
- Hibernate学习笔记(二)—— 实体规则&对象的状态&一级缓存
一.持久化类 1.1 什么是持久化类? Hibernate是持久层的ORM映射框架,专注于数据的持久化工作.所谓的持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么是持久化,什么又是持 ...
- Java实战之02Hibernate-02映射、一级缓存、实体对象状态
五.映射基础 1.实体类采用javabean的编写规范 JavaBean编写规范: a.类一般是public的 b.有默认的构造方法 c.字段都是私有的 d.提供公有的getter和setter方法 ...
- java框架之Hibernate(2)-持久化类&主键生成策略&缓存&事务&查询
持久化类 概述 持久化:将内存中的对象持久化到数据库中的过程就是持久化.Hibernate 就是用来进行持久化的框架. 持久化类:一个 Java 对象与数据库的表建立了映射关系,那么这个类在 Hibe ...
- Hibernate——(5)持久化对象和一级缓存机制
一.对象的三种状态 1.暂时态:当对象刚创建,和Session没有发生任何关系时,当程序运行完就即刻消失,被称为暂时态. 2.持久态:当执行如下代码时,对象变为持久态 Emp e = new Emp( ...
- Hibernate实体对象三种状态
Hibernate实体对象生命周期: 1. 自由状态(Transient,临时状态,瞬态) 在内存中自由存在,与数据库无关,未被Hibernate的Session管理 2. 持久状态(Persiste ...
- 1.1Hibernate持久化类和Hibernate持久化对象状态
一.持久化对象po类 1.po定义 PO,是Persistent Object的缩写,是持久化类.PO是由PO=POJO+hbm映射配置组成. 2.通俗理解 PO类即持久化类,其实就是一个普通的Jav ...
- 在Hibernate框架中详谈一级缓存
在学习Hibernate的过程中我们肯定会碰上一个名词---缓存,一直都听说缓存机制是Hibernate中的一个难点,它分为好几种,有一级缓存,二级缓存和查询缓存 今天呢,我就跟大家分享分享我所理解的 ...
- 使用Myeclipse为数据表创建hibernate实体对象
hibernate是orm框架的一种,orm即Object Relational Mapping,对象映射关系,其主要作用是将数据库(mysql,mssql,oracle)的对象转换为具体编程语言(如 ...
随机推荐
- k8s-prometheus监控
- 第二十二篇:Spring简单定时任务
背景:有些操作,不适合放在页面上让用户手动触发去执行,比如一些需要不断更新的数据(如统计数据)有些需要同步的数据,不需要非常实时,可以在固定的时间或者固定的频率执行同步 第一步:配置xml第二步:编写 ...
- springcloud系列14 bus的使用
首先springcloud_bus原理: (1)完整流程:发送端(endpoint)构造事件event,将其publish到context上下文中(spring cloud bus有一个父上下文,bo ...
- c#窗体开发
奇: 常用控件的使用(期间参杂着VS快捷键/常用设置) 快捷键:引用命名空间:shift+alt+F10 断点:F9 调试:F5 逐句调试(每行代码一次跳转):F11 逐过程调试:F10 重构提取方法 ...
- JS获取url参数,修改url参数
function getURL(){ var args = {}; var query = location.search.substring(1); //获得了当前链接的中?号后的参数 var pa ...
- Android开发 控件阴影详情
如何给控件设置阴影? <com.google.android.material.tabs.TabLayout android:id="@+id/tablayout" andr ...
- Django流程
开始具体的代码之旅前,先来宏观地看下Django是如何处理Http Resquest的,如下图: 假设你已经在浏览器输入了 http://127.0.0.1:8000/polls/,接下来浏览器会把请 ...
- [转]Git 常用命令详解
史上最浅显易懂的Git教程 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/ ht ...
- [转载]Emmet (ZenCoding) 缩写语法
Emmet 使用类似于 CSS 选择器的语法描述元素在生成的文档树中的位置及其属性. 元素 可以使用元素名(如 div 或者 p)来生成 HTML 标签.Emmet 没有预定义的有效元素名的集合,可以 ...
- redis笔记_源码_内存分配
文件:zmoalloc.h zmoalloc.c 1.求两个整数的余数 eg: 求_n对sizeof(long)的余数(_n&(sizeof(long)-1)), 性能提升为50%-100% ...