关于Hibernate的对象状态转变描述

一个实例对象Person()在HIbernate数据库操作中有三种状态分别为:临时状态,持久化状态,托管状态

1.临时状态:Person()对象的调用,赋值等操作,Person存在内存中

2.持久化状态:person()经过session类的方法操作,把person()从内存中转移到得了hibernate内部的session中

     在Hibernate中session对象操作时会对照Person()的快照文件(副本)。

    情况1:                          Person person = (Person)session.get(Person.class, 1);

			person.setName("中文");
			person.setSex("还是女");
                        session.save();
			transaction.commit();
			session.close();
                  代码中session.save()是无用代码,session是将Person()转到session中,但是Person()对象本身就是在                Hibernate中的session取出来的,已经是在session中,所以可以直接省略

   情况2:

                        Person person = new Person();
                       person.setId(1);
			person.setName("王五");
			person.setSex("女");
			session.update(person);
			transaction.commit();
			session.close();
                 在代码中session.update方法是有运行的,因为前四行person对象都处于临时状态,session.update()将person()转换到session中,在转换的过程中,通过核对快照文件(副本)对照改id的属性是否有修改,如果有便实行修改,如果没有则只转移不操作

   情况3:

                       Person person = new Person();
			person.setName("王五");
			person.setSex("女");
			person.setId(1);
			session.save(person);
			transaction.commit();
			session.close();
                   在代码中session.save()方法是有运行的, 和上面一样,session.update()将person()转换到session中,在转换的过程中,会核对快照文件(副本),如果1.id有重复,则只转移不操作,如果有,则添加信息


3.托管状态:person()通过数据库操作将数据存入数据库,并且断开与数据库的连接

               除了查询数据库中id的最大值得sql代码外,所有的sql代码是运行transaction类时候产生的


4.当session.close()方法执行,session将关闭,如果再次openSession打开session,这个则为全新的session,也就是说之前session中的page()也将关闭,Page()对象的状态时临时状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值