跟踪对象持久化状态,掌握对象持久化
来源:互联网 发布:汉唐香莎温泉会所 js 编辑:程序博客网 时间:2024/05/20 13:13
准备工作
在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程。本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernate中的核心接口进行一些JDBC基本操作,来观察状态的转移。
准备工作很重要,需要了解一些专业词汇,所谓专业词汇,意思大家都懂,只是在专业领域里起个专业的名称罢了。所以见到陌生东西时,应该尽可能的消除这种不必要的恐惧。
先了解这个专业词汇
何谓“持久化” 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中。
持久化对象有三种状态
瞬时对象(Transient Objects):
1. 使用new 操作符初始化的对象不是立刻就持久的。它们的状态是瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象,将由垃圾回收机制回收。
2. 没有被session管理
3. 在数据库中没有与之匹配的记录
持久化对象(Persist Objects):
1. 纳入持久化管理器Session统一管理
2. 持久实例是在事务中进行操作的,当事务提交时(在清理缓存时),通过执行SQL语句把内存中的状态同步到数据库中。
3. 在数据库中有与之匹配的记录
离线对象(Detached Objects):
1. Session关闭之后,持久化对象就变为离线对象。离线表示这个对象不能再与数据库保持同步,它们不再受Hibernate管理。
2. 在数据库中存在与之匹配的记录。
使用hibernate中的核心接口进行一些JDBC基本操作,来观察状态的转移
由transient状态到persist状态,完成insert操作
由detached状态到persist状态,完成update操作
- <span style="font-size:18px;">public void testSave1(){
- Session session = null;
- User user = null;
- try {
- session = HibernateUtils.getSession();
- session.beginTransaction();
- // transient状态
- user = new User();
- user.setName("zhangsan");
- user.setPassword("123");
- // persist状态
- session.save(user);
- //Persistent状态的对象,如果对象的属性发生改变了
- //hibernate在清理缓存(脏数据检查)的时候,会和数据库同步
- // 和数据库同步,体现在:当commit,开始清理缓存,使用快照比对的方式生成相应的sql语句,先insert,再update。
- user.setName("lisi");
- //可以显示的调用update方法,但此时为持久状态,调用update没有什么意义
- // session.update(user);
- session.getTransaction().commit();
- } catch (Exception e) {
- e.printStackTrace();
- session.getTransaction().rollback();
- } finally {
- HibernateUtils.closeSession(session);
- }
- // detached状态
- user.setName("wangwu");
- try {
- session = HibernateUtils.getSession();
- session.beginTransaction();
- //将detached状态的对象重新纳入session管理
- //此时将变为persistent状态的对象
- session.update(user);
- session.getTransaction().commit();
- } catch (Exception e) {
- e.printStackTrace();
- session.getTransaction().rollback();
- } finally {
- HibernateUtils.closeSession(session);
- }
- }
- </span>
掌握了状态变化,当处于某个状态时就知道可以进行何种操作了。比如当处于Transient状态,我们只能进行save、update操作或者被回收。
Hibernate持久化是JPA规范的一种实现,还有其他实现方式,比如EJB的持久化,但大同小异,所以学好Hibernate的持久化,再学习其他的就更容易上手和理解了。
- 跟踪对象持久化状态,掌握对象持久化
- 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化
- 持久化对象的状态
- hibernate持久化对象状态
- 持久化对象的状态
- hibernate持久化对象状态 .
- hibernate持久化对象状态
- Hibernate持久化对象状态
- Hibernate持久化对象状态
- hibernate持久化对象状态
- 持久化对象的状态
- hibernate持久化对象状态
- hibernate持久化对象状态
- hibernate持久化对象状态
- 持久化对象的状态
- hibernate持久化对象状态
- hibernate持久化对象状态
- Hibernate3---持久化对象的状态
- android 库里出错分析
- 一个文件(又N个文件组成的)分解成多个文件
- WWDC 2012 Session笔记——405 Modern Objective-C
- [学习笔记]学习主题模型(Topic Model)和PLSA( probabilistic latent semantic analysis)
- Ubuntu下UltraEdit破解方法
- 跟踪对象持久化状态,掌握对象持久化
- 实现 Cocos2d-x 全局定时器
- JAVA服务端多个文件合并传到客户端分解
- 黑马程序员-java学习笔记-枚举
- 前端开发攻城师绝对不可忽视的五个HTML5新特性
- [OpenCV2]遍历图像的临近像素
- 一款java写的将汉字转为拼音的工具类
- 数据库设计(树形结构)
- 封装html的select标签的js操作