zoukankan      html  css  js  c++  java
  • 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而言的。

    一个session对应一个事物

  • 相关阅读:
    《android深入探索》第七章心得
    《android深入探索》第六章心得
    《android深入探索》第五章心得
    《android深入探索》第四章心得
    《android深入探索》第三章心得
    《android深入探索》第二章心得
    嵌入式Linux的调试技术
    硬件抽象层:HAL
    让开发板发出声音:蜂鸣器驱动
    LED将为我闪烁:控制发光二极管
  • 原文地址:https://www.cnblogs.com/bendoudou/p/8547505.html
Copyright © 2011-2022 走看看