zoukankan      html  css  js  c++  java
  • day35-hibernate映射 03-Hibernate持久态对象自动更新数据库

    持久态对象一个非常重要的能力:自动更新数据库。

    package cn.itcast.hibernate3.demo1;
    
    import static org.junit.Assert.*;
    
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.junit.Test;
    
    import cn.itcast.utils.HibernateUtils;
    
    /**
     * Hibernate的测试类
     * 
     * @author zhongzh
     *
     */
    
    
    
    public class HIbernateTest1 {
        @Test
        //测试持久态的对象自动更新数据库(因为它依赖了hibernate的一级缓存区域)
        public void demo2() {
        //1.创建Session
          Session session = HibernateUtils.openSession();
        //2.开启事务
          Transaction tx = session.beginTransaction();
          
          //获得一个持久态的对象
         Book book = (Book) session.get(Book.class, 1);
         book.setName("Struts2开发");//现在不用update(book)也可以自动完成数据库的更新
         //没有手动调用update()方法也可以完成数据库的更新
         
         
         
         
         
         //session.update(book);//之前是update(book)才能完成修改
          
        //3.提交事务
          tx.commit();
         //4.关闭资源
          session.close();
        }
        @Test
        //区分持久化对象的三种状态:
        public void demo1() {
            //  1.创建Session
            Session session = HibernateUtils.openSession();
            //  2.开启事务
            Transaction tx = session.beginTransaction();
            
            //往数据库去保存一本图书:
            Book book = new Book();//book是一个持久化对象,因为book有一个实体类已经
            //和我们的表建立起映射了 Book是一个持久化类  一new()就是瞬时态了  
            //瞬时态: 没有唯一标识OID,没有与session关联.
            //刚new()出来,从数据库里面也不知道它是什么。它根本就没有OID,没有和session关联,是一个单独的
            //对象
            book.setName("Hibernate开发");
            book.setAuthor("孙XX");
            book.setPrice(65d);
            
            session.save(book);  //持久态  往数据库一存它就有OID了,而且是和session关联。
            //持久态: 有唯一标识OID,与session关联.
            
            //  3.事务提交
            tx.commit();
            //4.释放资源
            session.close();
            
            book.setName("Struts2开发");  //脱管态  session关闭了,book不与session关联了。
            //脱管态:有唯一的标识,没有与session关联.
            fail("Not yet implemented");
        }
    
    }
    //******自动更新数据库的能力依赖了Hibernate的一级缓存.

  • 相关阅读:
    android自定义视图
    CISCO PVST+配置和结果验证 per vlan spanning tree(51cto 实验10)
    读入a,b当a,b不同时为零时结束
    跨交换机VLAN 配置和结果验证(51cto :实验9)
    单交换机VLAN 配置和结果验证(51cto-o8)
    cocos2d(1)
    servlet-session
    Servlet-servletContext
    mysql数据库从windows迁移到linux,或者linux迁移到windows教程
    linux (centos) 安装MySql详细教程!!实战详解
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/6673279.html
Copyright © 2011-2022 走看看