Hibernate缓存、组件、继承映射

Hibernate缓存、组件、继承映射

三种状态:

临时状态:不受session管理,没有提交到数据库;没有执行sql之前,new对象的时候;

持久化状态:受session管理,提交到数据库;正在执行sql

游离状态:不受session管理,提交到数据库;session关闭后

Cache缓存:会先看看缓存里有没有,有就取出来,没有就到数据库取数据。

Session的三个方法:flush、evict、clear

不同session不会共享数据。

List与iterator的区别:

List是直接到数据库进行查询,也会放到缓存,但是不会到缓存取数据;

Iterator是到数据库取数据也放到缓存,会到缓存取数据。

Get和load的区别:

Get是及时查询,直接一个select出来;

Load默认是懒加载,使用到数据的时候才会到数据库取数据。会先到数据库取主键,然后根据主键一个一个遍历。

Lazy=true、false、extra(真正使用到数据的时候才回到数据库取数据,像isEmpty、size都不会到数据库取数据)

一对一映射:

<generator class=”foreign”>

<param name=”property”>引用的对象</

<id name="user_id">

<!--

id 节点指定的是主键映射, 即user_id是主键

主键生成方式: foreign  即把别的表的主键作为当前表的主键;

property (关键字不能修改)指定引用的对象     对象的全名 cn..User、  对象映射 cn.User.hbm.xml、   table(id)

-->

<generator class="foreign">

<param name="property">user</param>

</generator>

</id>

<!--

一对一映射,有外键方

(基于主键的映射)

constrained="true"  指定在主键上添加外键约束

-->

<one-to-one name="user" class="User" constrained="true"  cascade="save-update"></one-to-one>

组件映射

<!-- 组件映射 -->

<component name="wheel">

<property name="size"></property>

<property name="count"></property>

</component>

继承关系的映射

简单映射:

可以直接使用父类的属性;

获取时候注意:当写hql查询的使用,通过父类查询必须写上类的全名

每个类都对应一张表:(包括父类在内)

每个子类都这么写:

<joined-subclass name="Cat" table="t_cat">

<key column="t_animal_id"></key>

<property name="catchMouse"></property>

</joined-subclass>

每个类都对应一张表:(包括父类不在内)

需要将父类:abstract=”true” <class name="Animal" abstract="true">

abstract="true"  指定实体类对象不对应表,即在数据库段不生成表

<union-subclass name="Cat" table="t_cat">

<property name="catchMouse"></property>

</union-subclass>

注意:主键不能是自增长!可以用uuid,父类id要为String类型

时间: 2024-08-06 14:42:41

Hibernate缓存、组件、继承映射的相关文章

【Hibernate步步为营】--继承映射详解

上篇文章讨论了多对多映射,在使用多对多映射时重点是使用<many-to-many>标签,并在标签的两端加入外键这样在生成关系时会创建两个关系之间的关系表,通过关系表来维护它们之间的关系,另外对于单向和双向的区别是在映射的哪一端添加标签的问题.在面向对象中很重要的一个特性就是继承,继承实现了代码的复用,而且Hibernate把基本上所有的对象模型进行了映射封装,其中就包括继承映射,接下来就详细讨论. 一.继承映射 继承是面向对象很重要的特性,它实现了代码的服用,在关系模型中同样也有继承关系,这种

【Hibernate步步为营】--继承映射具体解释

上篇文章讨论了多对多映射,在使用多对多映射时重点是使用<many-to-many>标签,并在标签的两端加入外键这样在生成关系时会创建两个关系之间的关系表,通过关系表来维护它们之间的关系,另外对于单向和双向的差别是在映射的哪一端加入标签的问题.在面向对象中非常重要的一个特性就是继承,继承实现了代码的复用,并且Hibernate把基本上全部的对象模型进行了映射封装,当中就包含继承映射,接下来就具体讨论. 一.继承映射 继承是面向对象非常重要的特性,它实现了代码的服用,在关系模型中相同也有继承关系,

Hibernate中的继承映射

1.继承映射 继承映射分为两种情况:简单继承映射和继承映射. 在简单继承映射中,每个子类都要写一个映射文件. 在继承映射中,只使用一个映射文件.继承映射分为三种情况: 所有子类映射到一张表 需要使用鉴别器字段,不符合数据库设计原则 每个类映射到一张表 父类映射到一张表,插入一条子类信息,需要两条sql,父子表之间有外键约束 每个类映射到一张表,父类不映射表 必须使用uuid作为主键类型,所以bean中主键对应的属性不能是int类型 2.简单继承映射 <?xml version="1.0&q

千山万水之Hibernate(八)——继承映射

类之间的关系,我们可以分为四种:关联.依赖.继承.实现.而我们所说的实体类之间的关系往往会想到两种:关联和继承,其他两种为什么会不是很常用?首先类之间的依赖是一种比较弱的关系,在代码上可以理解为在一个类的方法的参数上或方法内部对另一个类有引用或调用,引用类或调用类不属于原始类的变量类型,实体类之间一般不存在方法,也就谈不上依赖了.实现描述的是类与接口的关系,一般接口用于定义方法,也就是相当于定义出一些规范,不进行实现. 在前面几篇文章中,我们了解和学习了如何使用Hibernate进行实体类之间的

框架 day33 Hibernate,组件映射,继承映射,抓取(检索)策略-优化,检索方式总结

组件(组成)映射 例1: public class Person { private Integer pid; //OID 值 private String name; //第一种方案 private String homeAddr; private String homeTel; private String companyAddr; private String companyTel; ↑一般项目都都采用此方案() *通过面向对象角度,使用设计模式(组件|组合),将数据都抽取到一个对象中.将

【SSH快速进阶】——Hibernate继承映射:每个具体类映射一张表

上篇文章说的是每个类映射一张表,不管是父类还是子类.与上篇文章不同的是,这里是每个"具体类"映射一张表,什么意思呢?就是让每个子类(具体的.有意义的类)映射一张表. 场景 与上篇文章场景一样,如下类图 上图中Pig类和Bird类继承Animal类,要让每个具体类映射一张表,就是只映射Pig和Bird,如下表所示: (表 1) 上面的表有个特点就是,t_pig和t_bird的主键永远都不会相同.因为表面上看起来这是两张表,但实际上存储的都是动物(同一类型),所以还可以看做是一张表. 配置

hibernate 继承映射

对于面向对象的程序设计语言而言,继承和多态是两个最基本的概念.Hibernate 的继承映射可以理解持久化类之间的继承关系.例如:人和学生之间的关系.学生继承了人,可以认为学生是一个特殊的人,如果对人进行查询,学生的实例也将被得到. Hibernate支持三种继承映射策略: 使用 subclass 进行映射:将域模型中的每一个实体对象映射到一个独立的表中,也就是说不用在关系数据模型中考虑域模型中的继承关系和多态. 使用 joined-subclass 进行映射: 对于继承关系中的子类使用同一个表

hibernate之继承映射

面向对象中有继承的概念,而关系型数据库却没有表与表之间的继承关系.解决思路有三种: 1.  继承关系层次一个表: 含义:使用一个表保存同一继承层次中的所有类,加额外字段来表示所属子类. 优点:多态查询,查询父类和所有子类数据时只需一次简单的查询,性能最佳: 缺点:在数据库表里添加各个区分子类的字段. 适用:需要多态查询,且子类的属性较少. 2.  每个具体类一个表: 含义:父类抽象化不对应一个表,每个子类对应一个表(每个子表包括父和子所有字段). 优点:实现的继承映射最简单. 缺点:多态查询持久

一口一口吃掉Hibernate(七)——继承映射

前几篇博文中讲到了常用的几种关联映射.其实hibernate中还有一种"省劲儿"的映射,那就是--"继承映射". 学了这么多的关系映射了,继承映射,从字面上也能了解到猜到几分.没错,继承映射就是为继承树而设置的一种映射方案. 继承映射的实现有三种策略: 单表继承.每棵类继承树使用一个表 类表继承.每个子类生成一个表. 具体表继承.每个类生成一个表. 我们还是用实例来说明一下,直接上图吧: Pig和Bird都继承自Animal,它们都有id,name,sex,但是Pi