博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate学习(三) hibernate中的对象状态
阅读量:4968 次
发布时间:2019-06-12

本文共 1313 字,大约阅读时间需要 4 分钟。

hibernate对象的状态分为三种:  游离状态,持久化状态,瞬时状态

下面一行代码区分:

 

 

   Configuration   cfg=new Configuration().configure();

   SessionFactory sessionFactory=cfg.buildSessionFactory();

   Session session=sessionFactory.openSession();

   Transaction    tx=session.beginTransaction();

   Person p=new Person ();  //  瞬时状态  ,没有id  ,没有与session关联  

   p.setName("zhangsan");

   p.setAge(13);

   p.setSex("男”);

   session.save(p); // 持久化状态   有id值  ,与session有关联

   tx.commit();     

   session.close(); // 游离 或托管状态   ,有id  和session无关联

  

 save () 方法:不能理解成保存,  理解成 将瞬时状态转换成持久状态的方法 

主键自增:在执行save方法时为了将对象转化为持久化状态,必须生成id值   ,必须执行insert值   

increament :执行save方法  ,为了生成id,会执行select  语句查询最大id值

 

hibernate主配置 设置      显示sql  语句,   规范sql语句;

下面操作来验证  :

    在session处设置断点  

   1.当 orm元数据配置中的主键生成策略为  navtive   (自动递增  /数据库中操作 )

   执行该断点代码 ,控制台出现   insert into   person  (name ,age ,sex)  values(?,?,?);   // id的添加由数据库操作

   2.当  主键生成策略改为  increament  (先在数据库查询最大值 ,最大值id+1    //  hibernate 操作)

   执行该断点代码  session.save()    控制台出现 select  *  from max(id)   from   person  

 

 持久化特点

 测试类 方法fn2() 部分代码:

  Person p=session.get(Person.class ,1 );  //持久化状态

  p.setName("李四");

  tx.commit();

  session.close(); // 游离状态

 

执行控制台出现

  select    *   from   person   where id=1  ;

  update person set   name=? 

 

以上情景表示 :  

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

 

提问 那更新操作中的 update 方法有什么作用  :       把对象从游离状态转换为持久化状态

 

  

转载于:https://www.cnblogs.com/shaoxiaohuan/p/7919403.html

你可能感兴趣的文章
SQL Server-5种常见的约束
查看>>
硬件之美
查看>>
[转载]java开发中的23种设计模式
查看>>
表格的拖拽功能
查看>>
函数的形参和实参
查看>>
【TP SRM 703 div2 500】 GCDGraph
查看>>
MapReduce 重要组件——Recordreader组件 [转]
查看>>
webdriver api
查看>>
apache 实现图标缓存客户端
查看>>
揭秘:黑客必备的Kali Linux是什么,有哪些弊端?
查看>>
linux系统的远程控制方法——学神IT教育
查看>>
springboot+mybatis报错Invalid bound statement (not found)
查看>>
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
P3565 [POI2014]HOT-Hotels
查看>>
MongoDB的简单使用
查看>>
hdfs 命令使用
查看>>
prometheus配置
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
python 多进程和多线程的区别
查看>>
sigar
查看>>