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为了方便管理持久化类,将持久化类分为了三种状态: ...
随机推荐
- 深度认识 Sharding-JDBC:做最轻量级的数据库中间层
转自: https://juejin.im/entry/5905ac37a22b9d0065e1199c 基于关系型数据库的水平扩展方案有很多开源的解决方案,但成熟稳定的产品凤毛麟角.当当自研的数据库 ...
- Flask 实现 WebSocket 通讯---群聊和私聊
一.WebSocket介绍 WebSocket是一种在单个TCP连接实现了服务端和客户端进行双向文本或二进制数据通信的一种通信的协议. WebSocket使得客户端和服务器之间的数据交换变得更加简单, ...
- FunDA(9)- Stream Source:reactive data streams
上篇我们讨论了静态数据源(Static Source, snapshot).这种方式只能在预知数据规模有限的情况下使用,对于超大型的数据库表也可以说是不安全的资源使用方式.Slick3.x已经增加了支 ...
- super()的作用
super能够用来訪问父类的构造方法和被子类所隐藏的方法.假设子类中有方法与父类中的方法名称和參数同样,则父类中的方法就被隐藏起来,也就是说在子类中重载了父类中的方法. 引用父类中所隐藏的语法格式例如 ...
- JDK,常见数据结构解读
一.情有独钟 对数据结构情有独钟,打算慢慢把jdk里的实现都读一遍,发现其中的亮点,持续更新. 二.ArrayList 这应该是我们学习java最早接触的到的数据结构,众所周知,数组在申请了内存之后, ...
- SpringMVC整合kaptcha(验证码功能)
一.依赖 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha& ...
- HTML5技术要点
HTML5技术要点 1.HTML5视频 <!DOCTYPE HTML> <html> <body> <video src="/i/movie.ogg ...
- 剑指offer四十七之求1+2+3+...+n
一.题目 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 二.思路 1.需利用逻辑与的短路特性实现递归终 ...
- 通过Groovy来消除代码噪声
通过Groovy来消除代码噪声 Java是在JVM上运行的最广泛使用的编程语言.不过,还有很多其他基于JVM的语言,比如Groovy,Scala,JRuby,Jython,Kotlin等等.其中,Gr ...
- JavaScript -- 运算符、eval、Parse
----- 003-运算符.html ----- <!DOCTYPE html> <html> <head> <meta http-equiv="C ...