day30_Hibernate复习_02(补刀)

一、对象的三种状态和一级缓存

对象的三种状态:     瞬时态:对象刚刚创建,没有与session关联,没有ID     持久态:已经和Session关联,有ID     游离态:没有和session关联,有ID     瞬时=>持久   save/persist     瞬时=>游离   setId     持久=>游离   close/evict/clear     持久=>瞬时   close/evict/clear 再 将ID设置为null     游离=>瞬时   将ID设置为null     游离=>持久   update/saveOrUpdate 持久状态的特性:持久对象的所有变化,会被自动同步到数据库中。 一级缓存:     Hibernate中有两种缓存:线程级别的session缓存 和 进程级别的sessionFactory缓存(不久就会学到啦)   在Session对象中,有一个缓存。 本质:Map集合、键是ID、值是对象,Hibernate会把所有查询到的对象,放入缓存中。         如果再次查询相同的对象,会先从缓存中找。目的:为了提高效率。 快照:快照是为了对比缓存中的对象是否发生变化,来决定事务提交时,是否需要修改数据。 其他api:     evict();    将缓存中的对象移除     clear();    清空一级缓存     refresh(Object);    刷新 => 强制刷新缓存中的对象 => (可以用来解决缓存与数据库数据不同步的问题(局部解决))     flush();    对比快照,并提交缓存对象     saveOrUpdate(Object);    可以同时完成保存或更新操作     save/persist     HQL/SQL/Criteria与缓存的关系 => 查询到的对象会放入缓存中,但是每次查询都要发送sql语句。

二、多表设计:一对多 和 多对一

 一对多的表达:     在数据库表中如何表达一对多关系:在多的一方的表中加入外键,引用的是一的一方的主键。     在对象中如何表达一对多关系:在一的一方使用集合表达持有多的一方,在多的一方引用一的一方的对象。     在配置文件中如何表达一对多关系: 一方:         <set name="一的一方属性的集合名称" >           <key column="多的一方的外键名称" />           <one-to-many class="多的一方所属对象的完整类名" />         </set> 多方:         <many-to-one name="多的一方属性的引用名称" column="多的一方的外键名称" class="一的一方所属对象的完整类名" /> 一对多的操作:     inverse:一的一方要不要放弃维护外键关系,默认值是:false     cascade:取值有:       save-update    级联保存和级联修改       delete    级联删除       delete-orphan    孤儿删除       all    save-update + delete       all-delete-orphan   save-update + delete + delete-orphan

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青玉伏案

Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架。本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在《Swift...

2357
来自专栏你不就像风一样

Hibernate各种主键生成策略与配置详解

主键由外部程序负责生成,在 save() 之前必须指定一个。Hibernate不负责维护主键生成。与Hibernate和底层数据库都无关,可以跨数据库。在存储对...

1202
来自专栏别先生

ERROR: invalid byte sequence for encoding "UTF8": 0x00

1、使用kettle批量导入数据的时候,数据出现了下面的错误。ERROR: invalid byte sequence for encoding "UTF8":...

1471
来自专栏JackeyGao的博客

Django + MySQL 查询不区分大小写问题

由于测试环境的 sqlite 没有问题, 所以怀疑在 mysql 的配置上面。 原来是字符集校对规则的问题, utf8_general_ci 不区分大小写, 可...

1472
来自专栏Java成神之路

PL/SQL学习笔记_02_游标

        在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现。 

1074
来自专栏天天

Ajax(20171102)

833
来自专栏java学习

Hibernate学习笔记2

定义hbm.xml映射文件和pojo类时都需要定义主键,Hibernate中定义的主键类型包括:自然主键和代理主键:

1034
来自专栏Linux驱动

C-fopen,fwrite,fread,fseek笔记

FILE * fopen(const char * path,const char * mode);

2112
来自专栏小樱的经验随笔

BugkuCTF SQL注入1

1784
来自专栏积累沉淀

Python快速学习第九天--安装并操作Mysql数据库

python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。...

2688

扫码关注云+社区

领取腾讯云代金券