Hibernate框架2

1.主键的生成策略

hibenrate负责生成主键:uuid永不重复(企业用的多随机字符串)

数据库底层负责生成主键:native(自动判断使用identity还是sequence)

identity(数据库底层采用自增方式生成主键:mysql支持)

sequence(数据库底层采用序列生成主键:oracle支持)

2.持久化类的编写规则(session操作的实例类的编写规则)

就是生成javabean(更具体)

补充:

1.持久化属性尽可能使用包装类  (如int默认0 不知道是不是复制 而类默认null直接判断是不是复制)

2.实体要有一个oid与表的主键对应(数据中有值的oid)

3.实体类不要使用final修饰 (无法生成代理对象)

3.持久化对象的三种状态

session操作的真正的实体对象

能辨别持久太对象:

瞬时态:没有oid(表中oid有具体值) 与session没有关联

直接获得瞬时态的对象:new

瞬时态--->持久态:save() saveOrUpdate()

瞬时态--->脱管态:setOid(主键值)

持久态:有oid 与sesssion关联(session调用除了close外的方法)

直接获得持久态的对象:get/load

持久态--->瞬时态:delete()

持久态--->脱管态:colse()

脱管态:有oid 与session没有关联(session调用了close())

直接获得脱管态的对象:不能

脱管态--->瞬时态:setOid(null);

脱管态--->持久态:update()  saveOrUpdate()

session只是与session无关 但是里面方法还是能直接用(session是会话对象不会随着close()关闭而不能调用对象封装好的访法)

持久太 有自动发送sql的能力(自动更新数据库的能力)

save就是insert

transaction.commit():先发送sql  再提交事务(就是执行sql语句 更新数据库的功能)提交就是更新

4.一级缓存

缓存 就是用时间换空间(就是 将内容存到内存 因为比起查磁盘其更快  关系性数据都是放到磁盘里)

客户端 →服务器端→数据库   服务器端判断缓存中有没有数据然后操作

hibenrate  一级缓存 session中  默认存在

二级缓存 sessionfactory 默认不存在 需要自己配置 (外置缓存 (需要导包) 慢慢被redis替代 )

一级缓存为什么可以自动更新数据库(有自动发送sql语句的功能)?

session有快照机制  (快照就是session里面创造了一份对象副本)

发不发sql 有没有快照

有缓存(缓存里面有对应的那一个对象   如果创建就发送sql 新的快照)就不发sql

存入数据库就发送sql 更新快照

存进数据库就有快照区   如save 插入  submit就是个更新的功能发送sql

5.事务(面试重点)

acid  面试:

原子性(Atomic):表示将事务中所做的操作捆绑成一个不可分割的单元,即对事务所进

行的数据修改等操作,要么全部执行,要么全都不执行。

一致性(Consistency):表示事务完成时,必须使所有的数据都保持一致状态。

隔离性:理想状态 各个事务操作互不影响

持久性:事务已提交 数据就永久性存到数据库磁盘

2.并发问题

脏读:一个事务读取到另一个尚未提交的数据

不可重读:一个事物中两次读取的数据内容不一致(就是事务未提交之前数据不变)

幻读/虚读:一个事物中两次数据的条数不一致

3.通过设置数据的隔离级别

null

时间: 2024-10-12 07:17:35

Hibernate框架2的相关文章

【Hibernate】hibernate框架的搭建

1, Hibernate 是什么 Hibernate框架简化了java应用程序与数据库交互的开发. Hibernate是一个开源,轻量级的ORM(对象关系映射)工具. 2,Hibernate框架的优点 Hibernate框架有很多优点.它们分别如下: 开源和轻量级: Hibernate框架是根据LGPL许可证和轻量级的开源工具. 快速性能: Hibernate框架的性能很快,因为缓存在Hibernate框架内部使用. hibernate框架中有两种类型的缓存:一级缓存和二级缓存.一级缓存默认是启

hibernate 框架的简单使用

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <

SSH(Struts2+Spring+Hibernate)框架搭建流程&lt;注解的方式创建Bean&gt;

此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblogs.com/wkrbky/p/5912810.html 一.Hibernate(数据层)的搭建: 实现流程 二.Spring(注入实例)的使用: 实现流程 三.Struts2(MVC)的搭建: 实现流程 这里注意一点问题: Struts2与Hibernate在一起搭建,antlr包,有冲突.MyE

Hibernate框架 —— 实体类的自动生成

一: hibernate框架 框架在一定程度上可以理解为一个半成品. Hibernate框架是对数据库进行操作,完成数据持久化得重任. 二: 配置 使用hibernate 需要先下载hibernate.如果要下载最新版的可以去官网下载,而对于历史版本,官网中好像很难找到,不过以下地址可是试试的哦! -> 3.0及以上版本 ->4.0及以上版本 不过在下使用的是3.3.2版本的.另外再说说各版本的意思:    rc 版--发布候选版,表示可能有bug,内容不会有很大的变动    ga 版--稳定

Hibernate框架(一)——总体介绍

作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的JDBC代码,不再反复的测试我们的SQL语句写的如何.这里这需要我们简单配置,调用框架给我们提供的方法,就可以完成对数据增删改查的,那么Hibernate到底是个什么样的框架呢?如何使用呢?先看一个关于Hibernate框架的知识体系图:  这篇博客,我们来总结一下,Hibernate宏观的认识和,

Hibernate框架简介(二)基本使用增、删、改、查

一.Hibernate框架简介 Hibernate是一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 1.1.理解持久化 瞬时状态:在程序运行的时候,有些程序数据是保存在内存中,当程序退出后,这些数据就不复存在了,所以称这些数据的状态为瞬时状态 持久状态:在使用一此软件的时候,有些数据,在程序退出后,还以文件等形式保存在硬盘或者数据库中,称这些数据的状态是持久状态 持久化:持久化就是将程序中的数据在瞬时状态和持久状态之间

java:Hibernate框架(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态)

1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configurati

JAVA框架之Hibernate框架的学习步骤

首先介绍一下Java三大框架的关系 以CRM项目即客户关系管理项目示例 hibernate框架的学习路线: 1.学习框架入门,自己搭建框架,完成增删改查的操作 2.学习一级缓存,事物管理和基本查询 3.学习一对多和多对多的操作等 4.学习基本查询和查询的优化 本人正在学习hibernate框架,今天是第一天,愿意把自己的学习过程分享给大家,希望大家提出宝贵意见,留言给我,共同进步需要什么软件.资源.例程jar包等的,可以留下邮箱,我晚上会给大家发过去的,谢谢

hibernate框架总结

hibernate的pom.xml专门用于存放各种jar包下面是简单的几种 <dependencies>     <dependency>            <groupId>org.hibernate</groupId>            <artifactId>hibernate-core</artifactId>           <version>4.2.21.Final</version> 

Hibernate框架

SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate,    基于持久层的框架(数据访问层使用)! Spring,   创建对象处理对象的依赖关系以及框架整合! Dao代码,如何编写? 1.操作XML数据 2 使用Jdbc技术 原始的jdbc操作, Connection/Statement/ResultSet 自定义一个持久层框架, 封装了dao的通用方法 DbUtils组件, 轻量级的dao的组件: Hibernate技术  [hibernate最终执行的也是