对象的三种状态

  瞬时状态:

    实体 没有id.没有与session关联

  持久化状态:

    特点:持久化状态对象的任何改变都会同步到数据库中

  游离态【也称作托管态】:

    实体 有id,没有与session关联

  Hibernate向数据库中增加用户调用addUser()方法时

//增加用户
public void addUser() { //得到配置信息
Configuration config = new Configuration().configure();
//创建sessionFactiory对象
SessionFactory sessionFactory = config.buildSessionFactory();
//获取session
Session session = sessionFactory.openSession();
//打开事务
Transaction transcation = session.beginTransaction(); User user = new User(); // =>没有id, 没有与session关联 瞬时状态
user.setName("Gary"); //=>没有id, 没有与session关联 瞬时状态 //存储user对象
session.save(user); //有id,与session关联 持久化状态 //提交事务
transcation.commit();
//关闭资源
session.close(); //没有与session关联,有id }
package com.Gary.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import com.Gary.domain.User; public class UserDao { //增加用户
public void addUser() { //得到配置信息
Configuration config = new Configuration().configure();
//创建sessionFactiory对象
SessionFactory sessionFactory = config.buildSessionFactory();
//获取session
Session session = sessionFactory.openSession();
//打开事务
Transaction transcation = session.beginTransaction(); //存储user对象save 只是为了生成id
//有id,与session有关联,持久化状态
User user = new User(); // =>没有id, 没有与session关联 瞬时状态
user.setName("Gary"); //=>没有id, 没有与session关联 瞬时状态 //存储user对象
session.save(user); //有id,与session关联 持久化状态 本质:对象状态的转换
//将瞬时->持久 目的:生成id System.out.println(user.getId()); System.out.println("////////////////////////////////////////"); //提交事务
transcation.commit();
//关闭资源
session.close(); //没有与session关联,有id } //删除用户
public void deleteUser()
{
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction transcation = session.beginTransaction();
//得到id为d03de4eb-e033-41c1-9da0-c9f155713e18的对象
User user = session.get(User.class, "d03de4eb-e033-41c1-9da0-c9f155713e18");
session.delete(user);
transcation.commit();
session.close();
} //修改用户
public void ChangeUser()
{
//读取hibernate.cfg.xml
Configuration config = new Configuration().configure();
//获取sessionFactory工厂
SessionFactory factory = config.buildSessionFactory();
//获取session
Session session = factory.openSession();
//开启事务
Transaction transaction = session.beginTransaction();
//根据id,得到session
User user = session.get(User.class, "d03de4eb-e033-41c1-9da0-c9f155713e18");
//修改名字,将对象改名为lGary
user.setUsername("lGary");
//更新数据库中的值
session.update(user);
//提交事务
transaction.commit();
//关闭session
session.close();
} //查询用户
public void findUser()
{
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session openSession = factory.openSession();
Transaction transaction = openSession.beginTransaction();
User user = openSession.get(User.class, "d03de4eb-e033-41c1-9da0-c9f155713e18");
System.out.println(user);
transaction.commit();
openSession.close();
} }

UserDao.java

  对象经历了三种状态的改变

        //存储user对象save           只是为了生成id
User user = new User(); // =>没有id, 没有与session关联 瞬时状态
user.setName("Gary"); //=>没有id, 没有与session关联 瞬时状态 //存储user对象
session.save(user); //有id,与session关联 持久化状态 本质:对象状态的转换
//将瞬时->持久 目的:生成id

  

  瞬时态指New 新建的一个对象,没有放在Session时,也没有存储在数据库中。

  持久态,指这个对象存储在数据库中,并且存在于Session会话中。

  而游离态指的是,这个对象存储在数据库中,但已经不存在于Session会话中。

  

  

对象三种状态的转变

  

 

最新文章

  1. 混合框架中Oracle数据库的还原处理操作
  2. MVC、MVVM、MVP小结
  3. {matlab}取二值图像centroid几种方法性能比较
  4. 用java做的免费投票器/软件/工具 可定制
  5. 【MongoDB】mongoimport and mongoexport of data (一)
  6. JavaScript typeof function()的注意事项
  7. linux中UUID和LABLE
  8. 使用Entity Framework 4进行代码优先开发
  9. puppet的配置清单书写
  10. [20190419]shared latch spin count 2.txt
  11. javascript函数的上下文
  12. android与php使用base64加密的字符串结果不一样解决方法
  13. systemd 编写
  14. CF961G Partitions
  15. 基于数组的循环队列(C++模板实现)
  16. Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)
  17. 使用Jersey上传文件
  18. Sql Server 生成连续时间段
  19. 如何制作chm文件
  20. 如何迁移 ArcGIS Enterprise WebGIS( Portal Server DataStore )系统

热门文章

  1. 怎样禁止 html 中 <textarea> 标签可以拉伸改变大小 ?
  2. maven 常见命令 学习笔记(一)之 -pl -am -amd
  3. kali破解ssh
  4. js之数据类型(原始类型)
  5. EBS常用表_Dictionary
  6. JavaJDBC【三、增删改查】
  7. vmware修改虚拟机名称
  8. VM虚拟机下centos安装。
  9. Galera Cluster 实现mysql的高可用 (Percona XtraDB Cluster)
  10. 三、Nginx支持php