zoukankan      html  css  js  c++  java
  • hibernate持久化类和一级缓存

    持久化类编写规则

    1.有无参构造函数。

    2.属性不能被final修饰。

    3.对外提供属性的get和set方法。

    4.需要提供一个持久化OID对象唯一标识对象。

    主键生成策略

                <!-- <generator class="native"/>包括sequence和 identity-->
                <!-- <generator class="increment"/>适用于单线程使用,采用hibernate主键生成策略,最大id加1成为新的id-->   
                <!--<generator class="identity"/>使用数据库底层主键生成策略,id自动增长,适用于mysql-->  
                <!--<generator class="sequence"/> 适用于oracle -->
                <!--<generator class="uuid"/> 适用于使用字符串当主键 -->
                <!--<generator class="assigned"/> 用户自定义主键生成策略 ,手动生成id-->

    持久化类三种状态

    1.瞬时态,没有OID标识,没有被Session管理。

    2.持久态,有OID持久化标识,被Session管理。

    3.托管态,有OID持久化标识,没有被Session管理。

    hibernate的一级缓存

    hibernate的一级缓存是session级别的缓存,随着session的创建而产生,随着session的清除而消失,一级缓存的作用是从内存中读取数据,而不需要从硬盘中读取数据,如果一个对象的标识在缓存中存在,下次获取数据从缓存中获取,插入数据如果对象已经存在,则不发送sql语句,如果不存在,需要发送sql语句。这是利用一级缓存的快照区实现的。

    package hibernate;
    
    import java.io.Serializable;
    
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    
    public class hibernateDemo3 {
           public static void main(String[] args) {
            Session session = hibernateUtils.openSession();
            Transaction transaction = session.beginTransaction();
            
           Customer customer1 = (Customer) session.get(Customer.class, 1l);
           customer1.setCust_name("666");
            System.out.println(customer1);
            
            transaction.commit();
            session.close();
            
            
            
        }
    }

    在第一次修改的时候,是发送了update语句,第二次执行的话快照区已经存在这个对象数据,就不会发送update语句。

  • 相关阅读:
    ios 应用剖析
    nyist 737 相邻石子合并问题
    砝码称重 2
    HDU4614【线段树。】
    Spark安装
    广度优先搜索
    MongoDB 操作手冊CRUD 更新 update
    HiWorkV1.3版震撼公布,今日起正式公开測试!
    织梦调用父级栏目链接和名称
    使用Blender批量导出/转换模型
  • 原文地址:https://www.cnblogs.com/yanqingguo/p/9745785.html
Copyright © 2011-2022 走看看