1、对象状态转换跟session的操作函数有关
2、对象状态有三种:临时对象,持久化对象,游离对象
3、对象:
(1). 临时对象: session中不存在,数据库中不存在,通过new创建的对象的状态
(2). 持久化对象:session中存在,数据库中存在,调用session的save()、update()、saveOrUpdate()等方法时的对象的状态
(3). 游离对象: session中不存在,数据库中存在,session关闭后的对象状态
4、三种状态的区别
①临时对象:session中不存在,数据库中不存在
②持久化对象:session中存在,数据库中存在
③游离对象:session中不存在,数据库中存在
5、对象转换示意图
6、对象转换时,session调用的函数:
①只要遇到用new来创建的的对象,都是临时对象
②要变成持久化对象,通常都会调用session的get()、load()、update()、saveOrUpdate()、save()函数
③持久化对象在回收之前,需要先用close()或者clean()或者evict()变成游离对象,然后用delete()变成删除状态等待回收
④临时对象只能变成持久化对象或者等待回收
⑤持久化对象只能变成游离对象或者直接变成删除状态
⑥游离对象只能变成持久化对象或者变成删除状态或者直接被回收
7、没什么好说的,就记住什么情况对象状态会变成什么就好了
8、hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置连接数据库基本信息 -->
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/hebernateTEST</property>
<!-- 配置hibernate基本信息 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 执行操作室是否在控制台打印sql -->
<property name="show_sql">true</property>
<!-- 是否对sql格式化 -->
<property name="format_sql">true</property>
<!-- 指定自动生成数据表的策略 -->
<property name="hbm2ddl.auto">update</property>
<!-- 设置 Hibernate 的事务隔离级别 -->
<property name="connection.isolation">2</property>
<!-- 设置调用delete()时,OID变成null -->
<property name="hibernate.use_identifier_rollback">true</property>
<!-- 指定关联的 *.hbm.xml文件(目录结构) 每个.hbm.xml对应一个数据表-->
<mapping resource="com/demo/sshtest/Info.hbm.xml"/>
</session-factory>
</hibernate-configuration>
9、Info.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-4-4 16:22:30 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.demo.sshte