SSH笔记-Hibernate对象的状态转换

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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值