Hibernate(二)持久化对象的状态
简介
以前学习Hibernate的笔记,整理一下便发出来了,防止弄丢。有错误的话麻烦各位留言评论,感激不尽。
持久化类
Hibernate完成了从面向对象模型表示的对象至关系模型表示的数据结构的映射,可以用面向对象的方式来处理数据库中记录。通过映射文件或注解,将持久化类映射为数据库中的表,而不需要继承任何类或者接口(即,低入侵式设计)
- 但有几点最基本的要求:
- 无参构造器
- 标识属性,最好使用基本类型的包装类
- 相应的getter/setter方法
瞬态
由new创建的对象且未与Session关联. 该状态下对象未被赋予标识值,且所进行的任何修改不会保存到数据库. 最终会被GC所回收.
持久态
与Session相关联,被添加至Session内部的集合属性,拥有与数据库中对应的标识ID,任何更改都会被Session所检测且更新数据库中的记录。当然,这在session的事务没有关闭之前才有效。
脱管
之前是持久化状态,现在与Session脱离关联,对象的改动也不会更新到数据库中,之后可以通过update()恢复为持久化状态。可以实现逻辑上的长事务。
三种状态之间的转化

区别
save()与persist(): 区别于是否立刻执行底层的insert语句,是否返回记录的主键值
get()与load(): 区别于是否延迟加载。若存在记录,load()返回只含有标识值的代理对象,get()直接从数据库中获取。若不存在,load()返回不含标识值的空代理对象(映射文件中已开启懒加载),get()返回null
参考文档
[轻量级Java_EE企业应用实战] https://book.douban.com/subject/6002664/
Hibernate(二)持久化对象的状态的更多相关文章
- hibernate中持久化对象的状态
持久化对象有以下几种状态: 临时对象(Transient): 在使用代理主键的情况下, OID 通常为 null 不处于 Session 的缓存中 在数据库中没有对应的记录 持久化对象(也叫”托管 ...
- Hibernate之Session对象的相关方法以及持久化对象的状态
一.持久化对象的状态 站在持久化的角度, Hibernate 把对象分为 4种状态: 持久化状态,临时状态,游离状态,删除状态.Session 的特定方法能使对象从一个状态转换到另一个状 ...
- 【Hibernate】持久化对象状态及以及缓存
一.持久化类状态 1.1 三种持久化对象的状态 1.2 区分三种状态 1.3 三种状态对象转换 1.瞬时态 2.持久态 3.脱管态 4.持久态对象有自动更新数据库的能力 一.持久化类状态 1.1 三种 ...
- Hibernater中的持久化对象以及状态转换
一.持久化对象的要求 1.提供一个无参的构造器:使Hibernate可以使用Constructor.newInstance() 来实例化持久化类. 2.提供一个标识属性(identifier prop ...
- Hibernate中的对象有三种状态
Hibernate中的对象有三种状态: 瞬时状态 (Transient),持久状态 (Persistent), 1. 脱管状态 (Detached) 1. 1. 瞬时状态 (Transient) 由 ...
- Hibernate -- 操作持久化对象
知识点2: session概述 Session 接口是 Hibernate 向应用程序提供的操纵对数据库的最主要的接口,它提供了基本的保存,更新, 删除和加载Java对象的方法. 知识点3:理解ses ...
- (转)Hibernate框架基础——在Hibernate中java对象的状态
http://blog.csdn.net/yerenyuan_pku/article/details/52760627 在Hibernate中java对象的状态 Hibernate把对象分为4种状态: ...
- Hibernate的持久化对象
Hibernate的持久化类 什么是持久化类 1. 持久化类:就是一个Java类(咱们编写的JavaBean),这个Java类与表建立了映射关系就可以成为是持久化类. * ...
- Hibernate之持久化对象
时间:2017-1-19 23:00 --Hibernate持久化类的状态1.持久化类:就是一个实体类与数据库建立了映射.2.Hibernate为了方便管理持久化类,将持久化类分为了三种状态: ...
随机推荐
- 801. Minimum Swaps To Make Sequences Increasing
We have two integer sequences A and B of the same non-zero length. We are allowed to swap elements A ...
- 查看SMB服务器用户
查看SMB服务器用户:pdbedit -L 查看SMB服务器运行状态:service smb status
- class字节码结构(二)(访问标志、类索引、父类索引、接口索引集合)
<Java虚拟机原理图解>1.3.class文件中的访问标志.类索引.父类索引.接口索引集合 字节码总体结构: 访问标志(access_flags)能够表示什么? 访问标志(access_ ...
- Android 打开系统设置界面及相应的系统界面
方法 1 :startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); 方法 2:Intent intent = new Intent(&quo ...
- my SQL Workbench创建数据库
1.首先连接数据库 2. 点击图中的红圈里的按钮,新建一个Schema,即数据库(个人理解..),修改一下Name 的值,如 mydatabase ,点击apply,再点apply,然后点finis ...
- POJ 2336
#include <iostream> using namespace std; int main() { //freopen("acm.acm","r&qu ...
- 在操作Centos系统时经常出现You have new mail in /var/spool/mail/root提示怎么回事?
例如,在命令窗口中输入date查看时间,下面会出现一行提示 实际上,该功能为Linux操作系统核对系统资源状态并汇总,默认发送到root用户的/var/spool/mail/root目录,并在标准输出 ...
- 死锁、Lock锁、等待唤醒机制、线程组、线程池、定时器、单例设计模式_DAY24
1:线程(理解) (1)死锁 概念: 同步中,多个线程使用多把锁之间存在等待的现象. 原因分析: a.线程1将锁1锁住,线程2将锁2锁住,而线程1要继续执行锁2中的代码,线程2要继续执行锁1中的代码, ...
- IRing项目开发
最近在做一个应用,名字我把它命名为IRing. 这是一款管理手机铃声的软件,主要目的是将白天和晚上的铃声设置进行区分,为用户提供方便.
- IntelliJ IDEA使用心得之快捷键篇
关于IDEA快捷键的文章有很多,因此,我只对经常使用快捷键进行介绍. 因为我的第一款IDE是eclipse,因此我是根据eclipse的快捷键习惯来重置IDEA的快捷键. 点击进入IDE设置界面: