zoukankan      html  css  js  c++  java
  • hibernate 数据处理

    1.Hibernate的配置文件

    Hibernate.cfg.xml  

    Dept.hbm.xml

     2.CRUD的方法名称和参数类型

       Save(Object obj)

       Delete(Object obj)

       Update(Object obj)

       Get(Class clazz,Serializable ser)

       Load(Class clazz,Serializable ser)

     3.提取工具类

       HibernateUtil{

           Factory

           session

          Public static Session getSession(){

             Cfg=new Configuration().configure();

             factory= cfg.buildSessionFactory();

             Session session=factory.openSession();

             Return session;

          }

       }

    4.@Before@After

      注解

    5.ORM Object Relational Mapping)对象关系映射

      对象:Java中的业务视图

      关系:底层二维表

      映射:小配置

     

    6.主键生成策略

     Uuid: 32位的16进制数

    1) sequence

    编号列生成由底层数据库提供序列,来完成主键自增,要求数据库必须支持序列 mysql不支持,oracle支持

    create sequence myseq; 创建序列

    insert into customer values (myseq.nextval); 插入数据时调用序列,序列+1

    2) native

    采用数据库支持自增策略, mysql就用identity oracle就用sequence

    策略1) ---> 策略4) 要求数据库主键必须为数字 ,因为只有数字才能自增

    3) uuid

    32位 唯一字符串, 主键使用varchar 类型

    真实开发中,用程序提供uuid

    4) assigned

    手动指定主键的值,该主键一般有实际意义,例如订单单号(20160114-A002

     

    --------------------------------------------------

    7.Get()load()的区别

       Load()没有使用对象的其他属性的时候,没有SQL  延迟加载

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

          ①:如果数据库中,没有 OID 指定的对象。通过 get方法加载,则返回的是一个null;通过load加载,则返回一个代理对象,

                  如果后面代码如果调用对象的某个属性会抛出异常:org.hibernate.ObjectNotFoundException; 

      ②:load 支持延迟加载,get 不支持延迟加载。

      是什么导致了延迟加载?

      解析:是因为内存中构建了代理对象。

      stu.getClass()

     Handler:处理人

       延迟加载原因:代理对象

       一级缓存

       

    8.脏检查

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

      依据:

       为什么要进行脏检查?

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

    如何脏检查?

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

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

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

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

     

    快照:

    9.session(线程非安全)  SessionFactory(线程安全)

    PDF

    Session是线程非安全的

    线程安全:多个线程访问同一个资源的时候,

    线程非安全:

    10.Session

      可以简单理解成相当于一个Connection

      Session是持久化对象的容器

      一级缓存(session

    如果两次get()同一个OID,那么第二次不再SQL,说明了一级缓存的

    存在性。一级缓存事务级别的事务

     Load()get()都可以给缓存放入数据,和取出数据

  • 相关阅读:
    eas之动态刷新Table
    eas之导入导出
    eas之事件
    eas之获得任何一个KDTable的选中行
    eas之创建一个UI界面并对其操作
    eas之style接口
    eas之指定虚模式
    eas之数据融合
    eas之kdtable格式化
    eas之视图冻结与解冻
  • 原文地址:https://www.cnblogs.com/yangronglin/p/5818250.html
Copyright © 2011-2022 走看看