Hibernate对象的状态

Posted bendoudou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate对象的状态相关的知识,希望对你有一定的参考价值。

一个测试hibernate对象保存的实例:

    @Test
    public void testSavePerson(){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        
        Person person = new Person();
        person.setPname("小丽");
        person.setPsex("女");        
        /**
         * 参数必须持久化对象
         */
        session.save(person);        
        transaction.commit();
        session.close();
    }   

1.Person person = new Person(); //在内存中创建一个person对象
2.person.setPname("小丽"); //给person对象赋值
3.person.setPsex("女");         //给person对象赋值
4.session.save(person); //将person移动到hibernatequy区域、
5.transaction.commit(); //发送sql语句,提交事件,发生完第五步后,person存入到数据库中
6.session.close(); //关闭数据库和hibernate的链路
1、2、3步的对象为临时对象,经过session。save()person对象变为持久化状态的对象,4、5是持久化状态(托管状态对象)。6是脱管状态对象
临时状态对象和脱管状态对象的区别:
两个本质一样,但是脱管状态对象曾经与数据库交互过。只有处于持久化状态时hibernate才管。

session.save()、session.update()、session.get()可以把一个临时状态的对象转换成一个持久化状态对象。

session.clear()将session中的对象从session中清空。从持久化状态转为脱管状态。

session.evict(person)把某一个对象从session中清空

一个对象是否是持久化对象是针对某一个session而言的。

技术分享图片

 









以上是关于Hibernate对象的状态的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate对象的三种状态

hibernate 删除 用不用先按ID把对象查出来 在删除??

hibernate框架学习之对象状态

hibernate对象三种状态

hibernate框架学习之对象状态

hibernate进阶hibernate持久化对象的三种状态