zoukankan      html  css  js  c++  java
  • OID,主键生成策略,PO VO DTO,get和load区别,脏检查,快照,java对象的三种状态

    主键生成策略

    sequence 数据库端

    native 数据库端

    uuid  程序端 自动赋值 生成的是一个32位的16进制数  实体类需把ID改成String 类型

    assigned  程序端 需手动给值

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     
     <hibernate-mapping package="entity">
         <class name="Student" table="Student">
             <id name="id" type="int" column="id">
             <generator class="uuid"></generator>
             </id>
             <property name="name" type="string" column="name"/>
             <property name="age" type="int" column="age"/>
         </class>    
     </hibernate-mapping>

     2. load()和gat()的区别

    Load()没有使用对象的其他属性的时候,没有SQL 延迟加载  因为代理对象的出现 才导致延迟加载。

     

       

    Get()没有使用对象的其他属性的时候,也生成了SQL 立即加载

     java对象的三种状态

    持久态

    Student stu=new Student();
    Session.save(stu);
    Session有的,DB中也会有。

    游离态

    stu.setId(1);
    手里有OID,但是DB中没有
    DB中,session没有的瞬时态

    瞬时态

    Student stu=new Student

    体现:在session中以及DB都没有

    脏检查(如图所示)

    脏检查及刷新缓存机制

       脏检查:当事务提交时,Hiberante会对Session中持久状态的对象进行检测,判断对象的数据是否发生了改变

       依据:

       为什么要进行脏检查?

       解析:如果对象发生了改变,就需要将改变更新到数据库中,以确保内存中的对象与数据库中的数据保持一致。

       如何脏检查?

     解析:当一个Dept对象被加入到Session缓存(有人又称为 一级缓存  后者是内部缓存)中时,Session会为Dept对象的值类型的属性复制一份快照

     当Session刷新缓存时,会先进行脏检查,即比较Dept对象的当前属性与它的快照,来判断Dept对象的属性是否发生了变化。

     如果发生了变化,Session会根据脏对象的最新属性值来执行相关的SQL语句,将变化更新到数据库中。

       Session具有一个缓存,可以管理和跟踪所有持久化对象,对象和数据库中的相关记录对应。

  • 相关阅读:
    winform中的 listview的使用的讲解。
    快乐的一天从AC开始 | 20210716 | P1345
    快乐的一天从AC开始 | 20210715 | P4643
    快乐的一天从AC开始 | 20210714 | P3594
    快乐的一天从AC开始 | 20210713 | P3557
    快乐的一天从AC开始 | 20210712 | P2251
    P7294-[USACO21JAN]Minimum Cost Paths P【单调栈】
    AT4353-[ARC101D]Robots and Exits【LIS】
    2021牛客暑期多校训练营9C-Cells【LGV引理,范德蒙德行列式】
    Loj#2880-「JOISC 2014 Day3」稻草人【CDQ分治,单调栈,二分】
  • 原文地址:https://www.cnblogs.com/lizeyang/p/5817789.html
Copyright © 2011-2022 走看看