SSH与SSM学习之hibernate09——对象的三种状态
来源:互联网 发布:女生黄金比例身材算法 编辑:程序博客网 时间:2024/06/05 18:16
- SSH与SSM学习之hibernate09对象的三种状态
- 一对象的三种状态
- 1 瞬时状态
- 2 持久化状态
- 3 游离托管状态
- 二持久化状态对象的任何变化都会自动同步到数据库中
- 三对象的三种状态转换
- 一对象的三种状态
SSH与SSM学习之hibernate09——对象的三种状态
一、对象的三种状态
hibernate中,对象拥有三种状态:瞬时状态、持久化状态、游离|托管状态。
1.1 瞬时状态
瞬时状态:没有id,没有在session缓存中。
例如下面的user实例就是 瞬时状态
User user = new User();// 瞬时状态。没有id,没有与session 关联user.setName("xiaoming");// 瞬时状态。没有id,没有与session 关联user.setAge(19);// 瞬时状态。没有id,没有与session 关联
1.2 持久化状态
持久化状态:有id,在session缓存中。
例如下面的user实例就是 瞬时状态
session.save(user);//持久化状态。有id,与session关联
或
User user = session.get(User.class,1);// 持久化状态。有id,与session关联
1.3 游离|托管状态
游离|托管状态:有id,没有在session缓存中。
例如下面的user实例就是 瞬时状态
User user = new User();// 瞬时状态。没有id,没有与session 关联user.setName("xiaoming");// 瞬时状态。没有id,没有与session 关联user.setAge(19);// 瞬时状态。没有id,没有与session 关联session.save(user);//持久化状态。有id,与session关联//--------------------------------------------//3.提交事务t.commit();//4.关闭资源session.close();//游离|托管状态。有id,没有与session关联
二、持久化状态对象的任何变化都会自动同步到数据库中
例如下面的例子
/*三种状态特点 持久化状态特点: 持久化状态对象的任何变化都会自动同步到数据库中. */@Testpublic void statusDemo3(){ //1.获取Session Session session = HibernateUtils.openSession(); //2.开启事务 Transaction t = session.beginTransaction(); //------------------------------------------- User user = session.get(User.class,1);// 持久化状态。有id,与session关联 System.out.println("修改name属性前---"+user); user.setName("杞文明");//持久化状态。有id,与session关联 user = session.get(User.class,1);// 持久化状态。有id,与session关联 System.out.println("修改name属性后---"+user); //-------------------------------------------- //3.提交事务 t.commit(); //4.关闭资源 session.close();//游离|托管状态。有id,没有与session关联}
打印结果
修改name属性前---User{id=1, name='xiaoming', age=19}修改name属性后---User{id=1, name='杞文明', age=19}
HibernateUtils.java
package com.qwm.hibernate02;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/** * @author:qiwenming * @date:2017/9/17 0017 2:39 * @description: * Hibernate工具类 */public class HibernateUtils { private static SessionFactory factory; static{ //1 创建,调用空参构造 Configuration conf = new Configuration().configure(); //2 根据配置信息,创建 SessionFactory对象 factory = conf.buildSessionFactory(); } //获得session => 获得全新session public static Session openSession(){ //3 获得session Session session = factory.openSession(); return session; } //获得session => 获得与线程绑定的session public static Session getCurrentSession(){ //3 获得session Session session = factory.getCurrentSession(); return session; }}
三、对象的三种状态转换
阅读全文
0 0
- SSH与SSM学习之hibernate09——对象的三种状态
- SSH与SSM学习之hibernate16——表与表的三种关系
- SSH之Hibernate—对象的三种状态
- SSH与SSM学习之Spring03——Spring创建对象的方式
- SSH与SSM学习之SSH整合09——Spring的aop事务
- SSH与SSM学习之hibernate04——Configuration
- SSH与SSM学习之hibernate05——SessionFactory
- SSH与SSM学习之hibernate06——Session
- SSH与SSM学习之hibernate07——Transaction
- SSH与SSM学习之hibernate13——HQL查询
- SSH与SSM学习之hibernate14——Criteria查询
- SSH与SSM学习之hibernate21——离线查询
- SSH与SSM学习之hibernate25——批量抓取
- SSH与SSM学习之Struts206——参数获取
- SSH与SSM学习之Struts211——拦截器
- SSH与SSM学习之Struts212——标签
- SSH与SSM学习之Spring15——cglib代理
- SSH与SSM学习之Spring13——动态代理之通知的使用
- C#--程序登录时写入登录日志
- 波雷费密码 Playfair Cipher 及 希尔密码 Hill Cipher 原理简述
- [LeetCode] 412.Fizz Buzz
- JQuery小结
- eclipse配置JDK
- SSH与SSM学习之hibernate09——对象的三种状态
- C#--记录用户程序退出时间日志
- Java基础之集合框架--Collections.reverse()方法
- java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver解决方案
- Android移动开发-属性动画的实现
- activeMQ发布订阅模式中中常用工具类
- Android IPC机制
- C#--生成流水号---当前时间加随机数
- 如何从零开始建立一个新的项目