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对应一个事物

  • 相关阅读:
    文件处理
    集合 字符编码
    3-11作业
    win 10 在vs2017下对mpi的安装以及认识
    java中二维数组的排序
    java中Arrays的用法
    java中随机二维数组中寻找最大值并输出坐标
    用java打印图形
    面向对象object与constructor
    for each in for in 与for of
  • 原文地址:https://www.cnblogs.com/bendoudou/p/8547505.html
Copyright © 2011-2022 走看看