• (补充)06.Hibernate持久化类&持久化对象


    持久化类:就是一个Java类(JavaBean),这个类与表建立映射关系就可以成为是持久类

      持久化类 = JavaBean + xxx.hbm.xml

      编写规则:

    • 1.提供一个无参数,public访问控制符的控制器  --底层需要反射
    • 2.提供一个标识属性,映射数据表主键字段  --唯一标识OID,数据库通过主键,Java对象通过地址确定对象,持久化类通过唯一标识OID确定记录
    • 3.所有属性提供public访问控制符的get,set方法
    • 4.标识属性应尽量使用基本数据类型的包装类型。(使用long不使用int),在封装存储到数据库是空值为null

    持久化对象:持久化类实现的对象

    持久化对象的三种状态:

    • 1.瞬时态  --没有持久化标识OID,没有被纳入到Session对象管理

        获得瞬时态对象:

    User user = new User();

        瞬时态-->持久态:

    save() / saveOrUpdate();

        瞬时态-->脱管态:

    user.setId(1);
    • 2.持久态  --有持久化标识OID,被Session对象管理

        获得持久化对象:

    get() / load() ;

        持久化-->瞬时态

    delete();    //比较有争议,进入特殊的状态(删除态,Hibernate不建议使用)

        持久化-->托管态

    session.close() / evict() / clear() ;
    • 3.脱管态  --有持久化标识OID,没有被纳入Session对象管理

        获得脱管态对象:不建议直接获得脱管态对象

    User user = new User();
    user.setId(1);

        脱管态-->持久态

    update() / saveOrUpdate() / lock()

        脱管态-->瞬时态

    user.setId(null);

    注意:持久态的持久化对象具有自动更新数据库的能力!!

       Hibernate的一级缓存--->>>Session的缓存和快照

  • 相关阅读:
    Oracle数据类型再探:plsql能建表时能用的数据类型
    数据库中的不同类型
    数据库类型研究
    代码块,静态变量,静态代码块,运算符优先级
    JAVA运算符
    Java多线程详解
    JAVA对象序列化(Serializable、ObjectOutputStream、ObjectInputStream、 transient)
    java的IO详解
    Java死锁
    Java重载、覆写、this、super、抽象类、接口
  • 原文地址:https://www.cnblogs.com/NEWHOM/p/6762950.html
Copyright © 2020-2023  润新知